Managing ecommerce messages via a social networking system

ABSTRACT

The present disclosure is directed toward systems and methods for managing electronic messages via a social networking system. For example, systems and methods described herein involve organizing electronic messages and/or communication threads related to a product offered by sale via the social networking system. Furthermore, systems and methods described herein can generate and send electronic messages that are related to the status of a product that a product seller has advertised for sale via the social networking system.

CROSS REFERENCE TO RELATED APPLICATIONS

N/A

BACKGROUND

1. Technical Field

One or more embodiments relate generally to commerce within a socialnetworking system. More specifically, one or more embodiments relate tomanaging commerce-related electronic messages between users of a socialnetworking system.

2. Background and Relevant Art

Internet users find it increasingly convenient to research, find, andpurchase goods online. eCommerce websites sell a variety of consumergoods ranging from car parts to groceries to electronics. In addition tothe countless retail companies that are currently on-line, privatesellers can also sell their goods on the Internet. Building andmaintaining an ecommerce website, however, is often a daunting andexpensive undertaking for many small businesses and private sellers.

Rather than building an ecommerce website of their own, private sellersand small businesses commonly utilize the convenience of a socialnetworking system in order to find and organize groups of buyers andsellers who are interested in the same types of products. In this way,social networking systems serve as a digital marketplace, where userscan buy and sell goods. For example, a social networking system may hostgroups that users can use to buy goods from and sell goods to othergroup members. Utilizing these social networking groups, buyers andsellers can post new goods for sale, communicate among themselves, andmake purchases.

Buyers and sellers may communicate with each other via a social networkfor a variety of purposes. For example, a potential buyer may have aquestion about the condition of a product, the advertised price of theproduct, or whether the seller is willing to accept a lower price.Accordingly, the potential buyer can send one or more messages to aproduct seller via the social networking system by utilizing themessaging services typically built into the social networking system. Aproblem arises however, when the product seller is offering multipleproducts for sale, or is receiving multiple messages regarding theproduct or products the product seller has offered for sale. In a shortamount of time, the product seller may have a message box full ofquestions about products, but with little contextual informationindicating which product each message is referring to.

Additionally, a product seller may have a difficult time updatingmultiple potential buyers regarding changes or updates to items that arefor sale. For example, the product seller may have to individually sendan electronic message to each potential buyer to inform the potentialbuyer of the updated sale details. This process is obviously cumbersomeand time consuming. Along the similar lines, if the product seller sellsa particular product but fails to delete the original product posting,the product seller may continue to receive message inquiries regardingthe product, even though the product has already been sold. This againresults in wasted time and frustration for the product seller.

Thus, there are several disadvantages to current methods for managingcommerce-related electronic messages via a social networking system.

SUMMARY

One or more embodiments described herein provide benefits and/or solveone or more of the foregoing or other problems in the art with systemsand methods for managing commerce-related electronic messages via asocial networking system. For example, an embodiment includes systemsand methods that pre-populate an electronic message from a potentialbuyer with structured data related to a product for sale. Thus, when theproduct seller receives the electronic message from the potential buyer,the electronic message contains enough context for the product seller toeasily determine to which product the electronic message relates. Anembodiment described herein organizes all additional electronic messagesbetween the product seller and the potential buyer into a communicationthread according to the structured data included in the pre-populatedelectronic message.

Furthermore, one or more embodiments described herein include systemsand methods that allow a product seller to quickly and easily broadcastan electronic message to all potential buyers who have communicated withthe product seller. For example, one or more embodiments track allcommunications related to a particular product between the productseller and multiple potential buyers. Accordingly, systems and methodsallow the product seller to broadcast a single electronic message to themultiple potential buyers.

Additionally, one or more embodiments described herein include systemsand methods that reply to user inquiries related to a product that hasbeen sold without any further input from the seller of the product. Forexample, in one embodiment, a social media post advertising a particularproduct may still be viewable even though the product has already beensold. In response to a user sending an electronic message to the productseller regarding the now sold product, one or more embodiments can replyto the electronic message without any input from the product seller.Additionally, one or more embodiments can also reply to all potentialbuyers who have communicated with the product seller regarding the nowsold product, to inform the other potential buyers that the product isno longer available.

Additional features and advantages of the present invention will be setforth in the description which follows, and in part will be obvious fromthe description, or may be learned by the practice of such exemplaryembodiments. The features and advantages of such embodiments may berealized and obtained by means of the instruments and combinationsparticularly pointed out in the appended claims. These and otherfeatures will become more fully apparent from the following descriptionand appended claims, or may be learned by the practice of such exemplaryembodiments as set forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above recited and otheradvantages and features can be obtained, a more particular descriptionof the aspects of one or more embodiments briefly described above willbe rendered by reference to specific embodiments thereof that areillustrated in the appended drawings. It should be noted that thefigures are not drawn to scale, and that elements of similar structureor function are generally represented by like reference numerals forillustrative purposes throughout the figures. Understanding that thesedrawings depict only typical embodiments and are not therefore to beconsidered to be limiting of scope, one or more embodiments of theinvention will be described and explained with additional specificityand detail through the use of the accompanying drawings in which:

FIG. 1 illustrates a block diagram of an environment for implementing amessaging manager in accordance with one or more embodiments;

FIG. 2 illustrates a detailed schematic diagram of a messaging managerin accordance with one or more embodiments;

FIGS. 3A-3E illustrate a sequence-flow diagram illustrating interactionsas part of a communication process between a product seller and multiplepotential product buyers in accordance with one or more embodiments;

FIGS. 4A-4H illustrate user interfaces for facilitating communicationsbetween a product seller and multiple potential product buyers inaccordance with one or more embodiments;

FIG. 5 illustrates a flowchart of a series of acts in a method ofmanaging electronic messages via a social networking system inaccordance with one or more embodiments;

FIG. 6 illustrates a flowchart of a series of acts in a method ofmanaging electronic messages via a social networking system inaccordance with one or more embodiments;

FIG. 7 illustrates a block diagram of an exemplary computing device inaccordance with one or more embodiments;

FIG. 8 is an example network environment of a social networking systemin accordance with one or more embodiments; and

FIG. 9 illustrates a social graph in accordance with one or moreembodiments.

DETAILED DESCRIPTION

One or more embodiments described herein provide benefits and/or solveone or more of the foregoing or other problems in the art with systemsand methods for managing electronic messages via a social networkingsystem. For example, a messaging manager of one or more embodimentsdescribed herein manages and organizes electronic messages betweenbuyers and sellers via a social networking application. To illustrate,the messaging manager can provide contextual information to a productseller along with a message from a potential buyer. As a result, theproduct seller can easily determine the product to which the messagerelates. In one or more embodiments, the messaging manager can createthreads of communications between a seller and multiple buyers, andorganize those communication threads according to the product discussedwithin each thread. Thus, when a new electronic message arrives, theseller can easily discern the product to which the electronic message isrelated.

Furthermore, in at least one embodiment, rather than sending individualmessages to multiple potential buyers regarding a particular product,systems and methods described herein allow a seller to broadcast asingle electronic message to multiple potential buyers regarding aparticular product. For example, as mentioned above, one or moreembodiments may include a messaging manager that organizes communicationthreads between a seller and multiple potential buyers based on theproduct discussed therein. The messaging manager can also allow theseller to broadcast a single message to each of the multiple potentialbuyers rather than requiring the seller to send an individual message toeach of the multiple potential buyers. In this way, the messagingmanager saves the seller time and frustration.

Additionally, in one or more embodiments, the messaging manager can alsosend an auto-reply to potential buyers in response to inquiriesregarding a product that has already been sold. For example, in oneembodiment, the original posting for a particular product may still beactive, even though that product is no longer available (i.e., theseller has already sold the product). In that embodiment, potentialbuyers may send electronic messages to the seller of the product withoutrealizing the product is no longer available. Rather than cluttering theseller's inbox with messages that are no longer of any concern, themessaging manager described herein can intercept these messages andreply to them, without any further input from the product seller.

As used herein, the term “social networking system” refers to a systemthat supports or enables on-line communication, input, interaction,content-sharing, and collaboration between users. A user of the socialnetworking system can have one or more “friends” via the socialnetworking system. As used herein, the term “friend” refers to a co-userassociated with a user via the social networking system (i.e., a contactor connection).

In one or more embodiments, a user may send one or more social mediaposts via the social networking system. As used herein, a “social mediapost” refers to an electronic communication sent from one user to one ormore co-users associated with the user via the social networking system.In one embodiment, a social media post is an electronic communicationfrom a user that the social networking system posts to a newsfeed (i.e.,a “wall”) associated with every friend of the user. Additionally oralternatively, a social media post can be an electronic communicationfrom a user that the social networking system posts to a newsfeedassociated with a particular group or community of social networkingsystem users.

In one or more embodiments, a user may send one or more electronicmessages via the social networking system. As used herein, an“electronic message” refers to an electronic communication sent from oneuser via the social networking system. In one or more embodiments, anelectronic message is a private message between only a sender and onerecipient. Rather than posting an electronic message to a newsfeed, asdescribed above, the social networking system can deliver the electronicmessage to a private inbox associated with the recipient. Additionallyor alternatively, an electronic message can be a private message betweenonly a sender and a group of recipients. In that case, the socialnetworking system can deliver a copy of the private message to an inboxassociated with each member of the group of recipients. Other examplesof electronic messages include text messages, instant messages, or anyother electronic message.

While a social networking system is predominantly concerned withenabling social networking system communication between users, in one ormore embodiments, a social networking system can also enable commercialtransactions. For example, in one embodiment, a social networking systemcan support groups or communities of users who are interested in thepurchase and/or sale of various types of goods. For instance, a socialnetworking system group may be dedicated to the purchase and sale ofclassic car parts. By utilizing various features of the socialnetworking system, the members of the classic car parts group cancommunicate with each other about parts for sale, prices, locations,etc., and eventually arrange for the sale and purchase of the parts. Inone embodiment, the social networking system can include paymentfeatures that allow for a group member to fund the transaction andcomplete the sale.

In one or more embodiments described herein, a product seller mayutilize the social networking system to facilitate the advertising andsale of the product. For example, in one embodiment, the seller cancompose a social media post that advertises the product for sale (orsimply “for sale post”). The seller can include information related tothe product in the social media post, which, when the seller submits thesocial media post to the social networking system, then becomes part ofthe structured data associated with the social media post. As usedherein, “structured data” can include any data that is structured intospecific groups, fields, or categories and/or associated with particularaspects of a post, a person, or a product being sold. Structured datacan include metadata associated with node and edge information relatedto the social media post, information related to the seller, informationrelated to the product, and interaction information related to thesocial media post within the social networking system. To illustrate,structured data for a for sale post may include a price, a producttitle/name, a product description, a product location, a product modelname/number, a product model year, product specifications, inventoryavailable, or any other specific types of information/data associatedwith a product being sold. The structured data may also include variousmedia content, such as images (e.g., pictures of a product), video,audio, etc. Using this structured data, the social networking system canfacilitate the insertion of “rich” objects within a messaging thread,such rich objects providing more information and/or content than typicaltextual messages.

In an embodiment, the messaging manager can manage and organize messagesbetween buyers and sellers based on the structured data associated withthe seller's social media post. For example, the social networkingsystem can provide various controls associated with the seller's socialmedia post that enable a potential buyer to either purchase the productdescribed in the social media post, or message the seller regarding theoffer for sale. In response to the potential buyer selecting the controlto message the seller, the messaging manager can pre-populate anelectronic message addressed to the seller with part or all of thestructured data associated with the social media post. Thus, themessaging manager can organize all messages between the seller and thepotential buyer related to the product in a communication thread basedon the structured data. Similarly, the messaging manager can organizeall messages between the seller and another potential buyer interestedin the same product in a different communication thread based on thesame structured data.

Furthermore, if a seller has more than one product for sale via thesocial networking system, the messaging manager can organize all of aseller's communication threads based on the products the seller isselling. As used herein, a “communication thread” is a group ofcommunications (i.e., electronic messages) sent back and forthbetween/among two or more users (i.e., the product seller and apotential product buyer). In one or more embodiments, a seller may havemultiple communication threads with multiple potential buyers, but maynot know which product is related to a particular communication thread.Accordingly, the messaging manager can organize a seller's communicationthreads by the products associated with the communication threads. Next,the message manager can organize the seller's communication threadsaccording to the potential buyers involved in each thread. Thus, theseller can easily determine which products are being discussed in everycommunication thread, as well as the potential buyers with whom theseller is conversing.

Additionally, the messaging manager can provide a single electronicmessage (i.e., a “broadcast message”) to multiple recipients based onthe structured data associated with a particular social media post. Forexample, in one embodiment, the seller may wish to send an electronicmessage to each potential buyer who has messaged the seller in relationto a particular product. Accordingly, the messaging manager can add theelectronic message to every message thread related to the structureddata associated with the particular product. Furthermore, the messagingmanager can also generate and automatically send electronic messages toevery message thread related to the structured data associated with aparticular product in response to detecting a sale of that particularproduct. These and other features will be described in greater detailbelow.

FIG. 1 illustrates an example schematic diagram of messaging system 100(or simply “system 100”). As illustrated in FIG. 1, the system 100 mayinclude client computing devices 102 a, 102 b, 102 c, and 102 d, and thesocial networking system 104, which are communicatively coupled througha network 108. Additionally, the social networking system 104 may alsoinclude a messaging manager 106, which will be described in greaterdetail below with reference to FIG. 2. Also as illustrated in FIG. 1,users 110 a, 110 b, 110 c, and 110 d may interact with client computingdevices 102 a, 102 b, 102 c, and 102 d respectively to access contentand/or services on the social networking system 104. Furthermore, eachof the client computing devices 102 a, 102 b, 102 c, and 102 d may alsoinclude a social networking application 112 a, 112 b, 112 c, and 112 drespectively, which will be described in greater detail below withreference to FIG. 2.

The client computing devices 102 a-102 d and the social networkingsystem 104 can communicate via the network 108, which may include one ormore networks and may use one or more communication platforms ortechnologies suitable for transmitting data and/or communicationsignals. In one or more embodiments, the network 108 may include theInternet or World Wide Web. The network 108, however, can includevarious other types of networks that use various communicationtechnologies and protocols, such as a corporate intranet, a virtualprivate network (VPN), a local area network (LAN), a wireless localnetwork (WLAN), a cellular network, a wide area network (WAN), ametropolitan area network (MAN), or a combination of tow or more suchnetworks. Although FIG. 1 illustrates a particular arrangement of theclient computing devices 102 a-102 d, the social networking system 104,and the network 108, various additional arrangements are possible. Forexample, the client computing devices 102 a-102 d may directlycommunicate with the social networking system 104, bypassing the network108. Additional details relating to the network 108 are explained belowwith reference to FIG. 8.

As illustrated in FIG. 1, the system 100 can include the users 110 a-110d. As described above, the users 110 a-110 d may be individuals (i.e.,human users), businesses, groups, or other entities. Although FIG. 1illustrates four users 110 a-110 d, it is understood that the system 100can include any plurality of users, with each of the plurality of usersinteracting with the system 100 through a corresponding plurality ofclient computing devices.

With reference to the system 100 described herein, any of the users 110a-110 d may be a sender of an electronic message, and any of the users110 a-110 d may be a recipient of an electronic message (e.g., a privateor personal message, an instant message, a social media post, or anyother type of electronic message). For example, in one embodiment, theuser 110 d may be an electronic message sender, and the user 110 a maybe the recipient of the electronic message sent by the user 110 d.Alternatively, in another embodiment, the user 110 d may send anelectronic message to a group rather than to a specific intendedrecipient. In that case, all users associated with the user 110 d viathe group within the social networking system (i.e., the users 110 a-110c) will become recipients of the electronic message sent by the user 110d.

The client computing devices 102 a-102 d may include various types ofcomputing devices. For example, the client computing devices 102 a-102 dcan include a mobile device such as a mobile telephone, a smartphone, aPDA, a tablet, a laptop or a non-mobile device such as a desktop, aserver, or another type of computing device. Further, the clientcomputing devices 102 a-102 d may run dedicated social networkingapplications 112 a-112 d associated with the social networking system104 to access social networking content (e.g., electronic messages,webpages, profiles, etc.) associated with the social networking system104. In turn, the social networking system 104 may present informationand content to the users 110 a-110 d via the social networkingapplications 112 a-112 d by way of one or more social networking pages(e.g., web pages or pages/views of a mobile application). Additionaldetails with respect to the client computing devices 102 a-102 d arediscussed below with respect to FIG. 7.

In addition, and as shown in FIG. 1, the system 100 can include thesocial networking system 104. One or more computing devices executinginstructions to perform the processes and provide the features disclosedherein may implement the social networking system 104. For example, oneor more server devices may implement and/or provide features associatedwith the social networking system 104. Additionally, in someembodiments, the social networking system 104 may be partiallyimplemented by one or more of the client computing devices 102 a-102 d.

The client computing devices 102 a-102 d of FIG. 1 can also send andreceive electronic messages by way of the social networking system 104.For example, the social networking applications 112 a-112 d installed oneach of the client computing devices 102 a-102 d may communicate withthe social networking system 104. In one or more embodiments, the socialnetworking applications 112 a-112 d can receive inputs from a user viaany of the client computing devices 102 a-102 d (e.g., such as by way ofa touch screen of a client computing device) representative of text, orother types of media, for use in an electronic message and/or socialmedia post.

The social networking system 104 can also provide social media posts(whether text or otherwise) to a social networking graphical userinterface (e.g., a profile, a newsfeed, or “wall”) of one or more usersof the social networking system 104. For example, one or moreembodiments may present a user 102 a, 102 b, 102 c, or 102 d with asocial networking system newsfeed and electronic messages from one ormore co-users associated with the user 102 a, 102 b, 102 c, or 102 d viathe social networking system 104. In one or more embodiments, each user102 a, 102 b, 102 c, or 102 d may scroll through the social networkingsystem newsfeed in order to view recent social media posts submitted bythe one or more co-users (e.g., friends) associated with the user 102 a,102 b, 102 c, or 102 d via the social networking system 104. In oneembodiment, the social networking system 104 may organize the socialmedia posts chronologically in a user's newsfeed. In alternativeembodiments, the social networking system 104 may organize the socialmedia posts geographically, by interest groups, according to arelationship coefficient between the user and the co-user, etc.Additionally, in one or more embodiments, the user 102 a, 102 b, 102 c,or 102 d may download a copy of the social networking system newsfeed asa record of the social media posts displayed thereon.

Additionally, in one embodiment, the social networking system 104 cantransmit social media posts and/or electronic messages between the users102 a, 102 b, 102 c, and 102 d. For example, in response to the user 102a submitting a social media post to the social networking system 104,the social networking system 104 can update the social networking systemnewsfeeds of the users 102 b, 102 c, and 102 d to include the socialmedia post submitted by the user 102 a. Furthermore, in one embodiment,the social networking system 104 can transmit an electronic messagebetween just two of the users 102 a, 102 b, 102 c, or 102 d. In thatcase, the social networking system 104 does not add the electronicmessage to the social networking newsfeed to a plurality of co-users,but rather provides the electronic message within a social networkinggraphical user interface (e.g., an inbox or graphical messaging thread)of one or more message recipients. In other words, an electronic messagecan be a private message between two users of the social networkingsystem 104, and a social media post may be a semi-public message thatthe social networking system 104 adds to the social networking systemnewsfeeds of a plurality of co-users of the social networking system104.

As shown in FIG. 1, the social networking system 104 can also includethe messaging manager 106. As with the social networking system 104, inone embodiment the messaging manager 106 is wholly operated on a server(i.e., the social networking system 104) communicatively coupled withone or more client computing devices. In one or more alternativeembodiments, the client computing devices 102 a-102 d can operate themessaging manager 106. In yet other alternative embodiments, themessaging manager 106 can be partially operated on a server andpartially operated on one or more client computing devices. Themessaging manager 106 will be described in greater detail with referenceto FIG. 2.

FIG. 2 illustrates a schematic diagram illustrating an exampleembodiment of the messaging manager 106 and social networkingapplication 112. As shown, the messaging manager 106 and/or socialnetworking application 112 can each include various components forperforming the processes and features described herein. For example, asshown in FIG. 2, the social networking application 112 may be installedon a client computing device (i.e., client computing devices 102 a and102 d) and can include a graphical user interface (“GUI”) manager 202and an input detector 204. Additionally as shown in FIG. 2, themessaging manager 106 may include, but is not limited to, a socialnetwork communicator 206, a user activity manager 208, a threadorganizer 210, a payment manager 212, and a data storage 214. The datastorage 208 can store social media post data 216, user data 218, threaddata 220, electronic message data 222, node data 224, and edge data 226.Although the disclosure herein describes the components 206-214 asseparate, as illustrated in FIG. 2, any of the components 206-214 may becombined into fewer components, such as into a single component, ordivided into more components as may serve one or more embodiments.

Each of the components 202-204 of the social networking app 112 and thecomponents 206-214 of the messaging manager 106 can be implemented usinga computing device including at least one processor executinginstructions that cause the processes described herein. In someembodiments, the components 202-204 of the social networking app 112and/or the components 206-214 of the messaging manager 106 can all beimplemented by a single server device, or across multiple serverdevices. Additionally or alternatively, a combination of one or moreserver devices and one or more client devices can implement thecomponents 202-204 of the social networking app 112 and the components206-214 of the messaging manager 106. Furthermore, in one embodiment,the components 202-214 can comprise hardware, such as a special-purposeprocessing device to perform a certain function. Additionally oralternatively, the components 202-214 can comprise a combination ofcomputer-executable instructions and hardware.

In one or more embodiments, the social networking application 112 can bea native application installed on the client computing device 102 a, 102b, 102 c, and/or 102 d. For example, social networking application 112may be a mobile application that installs and runs on a mobile device,such as a smart phone or a tablet. Alternatively, the social networkingapplication 112 can be a desktop application, widget, or other form of anative computer program. Alternatively, the social networkingapplication 112 may be a remote application that the client computingdevice 102 d, 102 a accesses. For example, the social networkingapplication 112 may be a web application that is executed within a webbrowser of the client computing device 102 d, 102 a. Additionally, in atleast one embodiment, the social networking application 112 may exist onthe client computing device 102 a, 102 b, 102 c, and/or 102 d as morethan one executable. For example, one executable may handle the newsfeedcapabilities of the social networking application 112, while anotherexecutable may handle the messaging capabilities of the socialnetworking application 112.

As mentioned above, and as shown in FIG. 2, the social networkingapplication 112 can include a GUI manager 202. The GUI manager 202 canprovide, manage, and/or control a graphical user interface (or simply“user interface”) that allows a user to compose, view, and send socialmedia posts and electronic messages. For example, the GUI manager 202can provide a user interface that facilitates the display of a socialnetwork user's newsfeed or wall. Likewise, the GUI manager 202 canprovide a user interface that displays one or more electronic messagesreceived by a social network user.

More specifically, the GUI manager 202 can facilitate the display of auser interface (e.g., by way of a display device associated with theclient computing device 102 d, 102 a). For example, the GUI manager 202may compose the user interface of a plurality of graphical components,objects, and/or elements that allow a user to compose, send and receiveelectronic messages and/or social media posts. More particularly, theGUI manager 202 may direct the client computing device 102 d, 102 a todisplay a group of graphical components, objects and/or elements thatenable a user to view electronic messages and/or social media posts.

In addition, the GUI manager 202 may direct the client computing device102 d, 102 a to display one or more graphical objects, controls, orelements that facilitate user input for composing and sending a socialmedia post and/or electronic message. To illustrate, the GUI manager 202may provide a user interface that allows a user to provide user input tothe social networking application 112. For example, the GUI manager 202can provide one or more user interfaces that allow a user to input oneor more types of content into a social media post or electronic message.As used herein, “content” refers to any data or information to beincluded as part of a message. For example, the term “content” will beused herein to generally describe text, images, digital media, files,location information, payment information, or any other data that can beincluded as part of a social media post or electronic message.

As discussed above, one example of content that can be included in amessage is content and/or controls associated with a payment from aproduct buyer to the product seller. In one or more embodiments, the GUImanager 202 can provide a user interface to allow a user to easily andefficiently define and send a payment to one or more other users. Forexample, the GUI manager 202 can provide one or more input fields and/orone or more user selectable elements with which a user can interact tocreate and send a payment.

In addition to the forgoing, the GUI manager 202 can receiveinstructions or communications from one or more components of the socialnetworking application 112 to display updated electronic messageinformation, updated social media post information, etc. The GUI manager202 can update an available option based on whether a particular optionis available at a particular point (i.e., the GUI manager 202 maydisable a purchase button on a social media post for a product that hasbeen sold). The GUI manager 202 can add, remove, and/or update variousother selectable elements or controls within the certain social mediaposts and electronic messages, as will be discussed below.

The GUI manager 202 can facilitate the input of text or other data to beincluded in an electronic message or social media post. For example, theGUI manager 202 can provide a user interface that includes a keyboard. Auser can interact with the keyboard using one or more touch gestures toselect text to be included in an electronic message or social mediapost. For example, a user can use the keyboard to enter a message toaccompany and/or describe one or more products the seller is advertisingfor sale via a social media post. In addition to text, the userinterface, including the keyboard interface, can facilitate the input ofvarious other characters, symbols, icons, or other characterinformation.

Furthermore, the GUI manager 202 can provide and transition between twoor more graphical user interfaces. For example, in one embodiment, theGUI manager 202 can provide a newsfeed to a social networking systemuser containing one or more social media posts from co-users associatedwith the user via the social networking system. Later, in response todetected input from the user or the messaging manager 106, the GUImanager 202 can transition to a second messaging graphical userinterface containing a listing of messaging threads associated with theuser and/or a collection of input controls for composing an electronicmessage, as described above.

As further illustrated in FIG. 2, the social networking application 112can include a user input detector 204. In one or more embodiments, theuser input detector 204 can detect, receive, and/or facilitate userinput in any suitable manner. In some examples, the user input detector204 can detect one or more user interactions with respect to the userinterface. As referred to herein, a “user interaction” means a singleinteraction, or combination of interactions, received from a user by wayof one or more input devices.

For example, user input detector 204 can detect a user interaction froma keyboard, mouse, touch pad, touch screen, and/or any other inputdevice. In the event the client computing device 102 d, 102 a includes atouch screen, the user input detector 204 can detect one or more touchgestures (e.g., swipe gestures, tap gestures, pinch gestures, or reversepinch gestures) from a user that forms a user interaction. In someexamples, a user can provide the touch gestures in relation to and/ordirected at one or more graphical objects or graphical elements of auser interface.

The user input detector 204 may additionally, or alternatively, receivedata representative of a user interaction. For example, user inputdetector 204 may receive one or more user configurable parameters from auser, one or more user commands from the user, and/or any other suitableuser input. The user input detector 204 may receive input data from oneor more components of the social networking application 112, from thestorage on the client computing device 102 d, 102 a, or from one or moreremote locations (e.g., the social networking system 104).

The social networking application 112 can perform one or more functionsin response to the user input detector 204 detecting user input and/orreceiving other data. Generally, a user can control, navigate within,and otherwise use the social networking application 112 by providing oneor more user inputs that the user input detector 204 can detect. Forexample, in response to the user input detector 204 detecting userinput, one or more components of the social networking application 112allow a user to select a recipient for a message, compose a message,select content to include in a message, and/or send a message to therecipient. Additionally, in response to the user input detector 204detecting user input, one or more components of the social networkingapplication 112 allow a user to navigate through one or more userinterfaces to review received electronic messages, contacts, etc.

In one or more embodiments, in response to the user input detector 204detecting one or more user inputs, the social networking application 112can allow the user to create a payment to send to one or more otherusers. For example, a user wanting to send a payment can interact with apurchase control provided on a menu within a user interface. Upondetecting the user interaction with the purchase control, the user inputdetector 204 can cause the GUI manager 202 to provide a user interfacefor creating a payment. Therefore, in response to the user inputdetector 204 detecting one or more user inputs, the social networkingapplication 112 can allow a user to create a customized payment thatdefines a payment to be sent to another user, as will further bedescribed below.

As mentioned above, the messaging manager 106 can include a socialnetwork communicator 206. In one or more embodiments, the social networkcommunicator 206 can communicate with the social networking system 104to receive electronic messages and/or social media posts. As describedabove, the users 110 d, 110 a may send electronic messages and socialmedia posts to social networking system 104 via the social networkingapplication 112 on client computing device 102 d, 102 a. Accordingly, inone embodiment, when the social networking system 104 receives anelectronic message or social media post from one of the users 110 d, 110a, the social networking system 104 can provide the electronic messageor social media post to the messaging manager 106 via the social networkcommunicator 206. For example, the social network communicator 206 mayreceive an electronic message or social media post composed by one ofthe users 110 a-110 d and sent via one of the client computing devices102 a-102 d to another one of the users 110 a-110 d by way of the socialnetworking system 104.

Additionally, the social network communicator 206 can also sendelectronic messages and social media posts. For example, in oneembodiment, the messaging manager 106 may determine to provide anelectronic message or social media post composed by a seller of aproduct to one or more co-users associated with the seller of a product.In that case, the social network communicator 206 can send theelectronic message to the one or more co-users via the social networkingsystem 104. In other words, as shown in FIG. 2, the messaging manager106 may receive an electronic message composed by the user 110 d via thesocial networking application 112 on the client computing device 102 d.In response to receiving the electronic message, the social networkcommunicator 206 can then send the electronic message to the user 110 avia the social networking application 112 on the client computing device102 a.

The social network communicator 206 can also communicate with the socialnetworking system 104 in order to receive social networking activityinformation. In one or more embodiments, social networking activityinformation can be associated with a social media post. For example,social networking activity information associated with a social mediapost can include user interaction information such as, but not limitedto, how many “likes” a social media post has received, how many times asocial media post has been re-shared or reposted, how many users havebeen tagged or untagged in a social media post, etc.

In one or more embodiments, social networking activity information canalso be associated with a particular user. For example, socialnetworking activity information associated with a particular user caninclude information such as, but not limited to, which social mediaposts the particular user has “liked,” which social media posts, theparticular user has re-posted or shared, which posts the particular userhas interacted with in other ways, etc. In one embodiment, the socialnetworking activity associated with a particular user may also includethe particular user's profile information, friend list, and socialnetworking system history.

In another embodiment, social networking activity information can alsobe related to commercial transactions. As mentioned above, users of thesocial networking system 104 can utilize various features of the socialnetworking system 104 to conduct commercial transactions. Accordingly,in one or more embodiments, the social networking system 104 includesfeatures that allow users to buy and sell goods. For example, suchfeatures may include graphical user interface controls including messagecontrols, purchase controls, invoice-generating controls, and othercontrols for facilitating commercial transactions and displayed by theGUI manager 202 of the social networking application 112. Thus, in oneor more embodiments, the social network communicator 206 can communicatewith the social networking system 104 in order to receive informationrelated to a user's interactions with features of the social networkingsystem 104 that facilitate commercial transactions as detected by theuser input detector 204 of the social networking application 112.

As mentioned above, and as illustrated in FIG. 2, the messaging manager106 can also include a user activity manager 208. The user activitymanager 208 can monitor social networking system activity informationreceived by the social network communicator 206. For example, asdescribed above, the social network communicator 206 can receive socialnetworking activity information associated with a user representative ofvarious actions taken by the user as detected by the user input detector204 of the social networking application 112. In one or moreembodiments, the messaging manager 106 can monitor the social networkingactivity information for specific actions taken by the user.

For instance, in one embodiment, a seller can submit a social media postto the social networking system 104 that includes information related toa product the seller wishes to advertise for sale. The social media postcan include a purchase control (i.e., a button) that a potential buyercan interact with (i.e., click or tap) in order to purchase the product.The social media post can also include a message control that apotential buyer can interact with in order to send an electronic messageto the seller. In one or more embodiments, the user activity manager 208can monitor social networking system activity information related to thepotential buyer in order to identify user interactions that indicate apotential buyer's desire to either purchase an product for sale, ormessage a seller.

In response to a detected interaction of a potential buyer with amessage control (i.e., a “message me” button) included on a seller'ssocial media post, the user activity manager 208 can instruct the GUImanager 202 of the social networking application 112 to transition to anew graphical user interface. For example, as described above, inresponse to detected input from the messaging manager 106, the GUImanager 202 of the social networking application 112 can transitionbetween various graphical user interfaces. Accordingly, in response tothe potential buyer indicating a desire to message the seller associatedwith a social media post, the user activity manager 208 can instruct theGUI manager 202 of the social networking application 112 of a clientcomputing device associated with the potential buyer to transition froma graphical user interface containing the potential buyer's newsfeed toa messaging graphical user interface. The messaging graphical userinterface can be a graphical user interface within the social networkingapplication 112 or within a separate, standalone application (e.g., astandalone messaging application).

Additionally, in response to the detected interaction of the potentialbuyer with the message control included on the seller's social mediapost, the user activity manager 208 can provide a pre-populatedelectronic message to the potential buyer. For example, in oneembodiment, the messaging manager 106 may provide, via the socialnetwork communicator 206, the generated pre-populated electronic messageto the potential buyer within a messaging graphical user interface. Inone or more embodiments, the messaging manager 106 pre-populates thepre-populated electronic message with at least part of the structureddata associated with the seller's social media post. As described above,the structured data associated with the seller's social media post caninclude a picture and/or description of the product advertised in theseller's social media post, as well as other node and edge dataassociated with the seller's social media post. For example, in one ormore embodiments, the pre-populated message can be a “rich” objectincluding content (e.g., a photograph) and text (e.g., name and/ordescription of the product) derived from the structured contentassociated with the seller's post. The potential buyer can add anelectronic message (e.g., a question about the price of the productadvertised in the seller's social media post, etc.) to the seller to thepre-populated electronic message, and the social networking communicator206 can send both the electronic message and the pre-populatedelectronic message to the seller.

Furthermore, in one embodiment, the social networking system 104 canprovide a seller with a graphical user interface control that a sellercan interact with once the seller sells a product advertised in a socialmedia post in order to inform other social networking system users thatthe product is no longer for sale. For example, when a seller submits asocial media post advertising a product for sale with a purchase controland a message control, the social networking system 104 may provide anadditional “mark as sold” control associated with the product only tothe product seller. In other words, the social networking system 104 canprovide a “mark as sold” button only within the seller's socialnetworking system newsfeed. Thus, when the seller sells the product, theseller can click the “mark as sold” button in order to inform otherusers that the product is no longer available. Accordingly, in one ormore embodiments, the user activity manager 208 can monitor socialnetworking system activity information related to the seller in order toidentify user interactions that indicate a product is no longer forsale.

Additionally, the user activity manager 208 can monitor socialnetworking system activity received by the social network communicator206 for other types of purchase events. For example, as described above,the user activity manager 208 can monitor social networking systemactivity related to the seller for a “mark as sold” button click, whichis one type of purchase event. Other types of purchase events caninclude, but are not limited to, a potential buyer interacting with apurchase control associated with the seller's social media post,deleting of a social media post advertising a given product, detecting acommunication thread between a seller and potential buyer containing oneor more electronic messages that include “purchase language” (e.g., “I'dlike to buy this,” “Ok, I'll sell it to you,” “I'll pay your askingprice,” etc.), and detecting a communication thread between a seller andpotential buyer containing a product invoice. In one or moreembodiments, the seller associated with the social media post canconfigure the social network communicator 206 to monitor socialnetworking system activity for any type of purchase event.

In one or more embodiments, the user activity manager 208 can takecertain social networking system activity information in account whendetermining whether a purchase event has occurred. For example, asdescribed above, the social networking communicator 206 can receivesocial networking activity information including user profileinformation, friend list information, social networking historyinformation, etc. In one embodiment, in response to detecting acommunication thread wherein a potential buyer states, “I'd like to buythis,” the user activity manager 208 may determine a purchase event hasnot taken place in light of the fact that the potential buyer has neverpurchased anything via the social networking system 104. Similarly, inresponse to detecting a communication thread wherein a potential buyerstates, “This is just what I need,” the user activity manager 208 maydetermine a purchase event has taken place in light of the messageand/or the fact that the potential buyer and the product seller are oneach other's friend lists, and that the potential buyer frequentlypurchases products from the product seller.

In addition to generating the pre-populated electronic message describedabove, the user activity manager 208 can also generate other types ofmessages. For example, in response to a detected purchase eventassociated with a seller's social media post, the user activity manager208 can generate an electronic message containing a “sold notification.”The sold notification can contain a message stating the productassociated with the seller's social media post has been sold.Additionally, the sold notification can also contain at least a portionof the structured data associated with the seller's social media post.In some embodiments, the seller can configure an electronic message forthe user activity manager 208 to include in the generated soldnotification. Accordingly, the user activity manager 208 can provide,via the social network communicator 206, the generated sold notificationto one or more potential buyers who have contacted the seller regardingthe product associated with the seller's social media post.

Furthermore, after the sale of a particular product and in response toan extraneous electronic message related to the now-sold product, theuser activity manager 208 can intercept the electronic message andgenerate a reply informing the electronic message sender that theparticular product is no longer available. For example, a product sellermay submit a social media post advertising a bike for sale, and thensubsequently sell the bike. If the product seller fails to mark theproduct as sold, or otherwise update the social media post, anothersocial networking system user would have no reason to know that theproduct seller has sold the bike. Accordingly, if the social networkingsystem user sends an electronic message to the product seller regardingthe bike, rather than cluttering the product seller's inbox with apointless electronic message, the user activity manager 208 can generatea reply electronic message informing the social networking system userthat “sorry, the bike has already been sold.”

The user activity manager 208 can also monitor social networking systemactivity received by the social network communicator 206 for other typesof interactions by the seller with the social networking application112. For example, in one embodiment, the GUI manager 202 can include amessaging control to a seller associated with a social media post thatenables the seller to compose a broadcast message for delivery to allpotential buyers who have contacted the seller regarding a particularproduct (i.e., a “message all” button). In response to a detectedinteraction between the seller and this messaging control, the useractivity manager 208 can instruct the GUI manager 202 to provide amessaging graphical user interface to the seller that enables the sellerto compose the desired broadcast message and send the composed broadcastmessage to the correct recipients.

As mentioned above, and as illustrated in FIG. 2, the messaging manager106 can also include a thread organizer 210. As described above, aproduct seller and one or more potential buyers of the product can sendand receive electronic messages related to the product. The threadorganizer 210 can organize all electronic messages into communicationthreads of electronic messages. For example, in one or more embodiments,the thread organizer 210 can organize all electronic messages sent to aseller into communication threads based on a product associated witheach electronic message (i.e., as defined in the structured dataincluded with each electronic message). To illustrate, as mentionedabove, the user activity manager 208 can provide an electronic messageto a potential buyer that is pre-populated with at least a portion ofthe structured data associated with a social media post. The socialnetwork communicator 206 includes this structured data as part of theelectronic message the social network communicator 206 sends from thepotential buyer to the seller associated with the social media post.Accordingly, the thread organizer 210 can organize every electronicmessage between that potential buyer and the product seller into acommunication thread based on the structured data included in theinitial electronic message from the potential buyer.

Additionally, in addition to organizing communication threads accordingto the structured data associated with each communication thread, thethread organizer 210 can further organize the message threads based onthe potential buyers associated with each communication thread. Forexample, a product seller may receive electronic messages from multiplepotential buyers who are all interested in the same product advertisedby the product seller. Accordingly, the thread organizer 210 canorganize communication threads generally according to the product, andcan further organize communication threads based on the potential buyerfrom whom each communication thread originates.

Furthermore, the thread organizer 210 can communicate, via the socialnetwork communicator 206, the organization to the GUI manager 202 of thesocial networking application 112. For example, as described above, theGUI manager 202 can provide a messaging graphical user interface via adisplay of the client computing device 102 a or 102 d. In one or moreembodiments, the messaging graphical user interface can include alisting of communication threads associated with a particular user. Inone embodiment, the GUI manager 202 can organize the listing ofcommunication threads in the messaging graphical user interfaceaccording to the organization determined by the thread organizer 210 fora particular user.

As mentioned above, and as illustrated in FIG. 2, the messaging manager106 can also further include a payment manager 212. The payment manager212 can facilitate sending and receiving payments between sellers andbuyers of products via the social networking system 104. As generallyexplained above, the payment manager 212 can coordinate a purchasetransaction associated with a product advertised by a seller via asocial media post. For example, in response to a detected interaction ofa buyer with a purchase control associated with a social media postadvertising a product, the GUI manager 202 can provide one or morecontrols to facilitate the purchase transaction (e.g., input fields forbilling information, input fields for shipping information, etc.).Additionally or alternatively, the payment manager 212 can simply act asa gateway to a third party payment system.

Additionally, in some embodiments, the payment manager 212 can alsoprovide invoices to a seller. For example, in one embodiment, the sellermay send a product invoice to a buyer in response to the buyerexpressing a desire to purchase the product. Accordingly, the paymentmanager 212 can generate an invoice for the product that includes, butis not limited to, the cost of the product, the payment terms for thepurchase, and other information associated with the seller (e.g., thename the buyer can make a check out to, the seller's business address,etc.). In one or more embodiments, the payment manager 212 can generatethe invoice as a document file (i.e., a portable document file), anelectronic message, or any other format suitable for this purpose.

In one or more embodiments, the payment manager 212 can also determine alevel of risk associated with a potential buyer. For example, thepayment manager 212 can analyze social network activity information,described above, in order to determine whether a potential buyer haspreviously made purchases via the social networking system 104, whetherthe potential buyer has a satisfactory payment record connected to anypurchases made via the social networking system 104, and whether thepotential buyer is associated with complaints registered with the socialnetworking system 104. In one embodiment, the payment manager 212 mayalso interact with a third party system in order to identify a creditscore associated with the potential buyer. Based on an analysis of thesevarious factors, the payment manager 212 may deny a purchase initiatedby the potential purchase.

In one or more embodiments, the messaging manager 106 can also includethe ability to hold purchase funds in escrow. For example, in oneembodiment, the payment manager 212 can allow any of the users 110 a-110d to maintain an escrow account including monetary funds that are heldby the social networking system 104. The escrow account allows a user toset aside funds toward a purchase the user plans to make via the socialnetworking system 104.

For instance, a user may wish to buy a bicycle listed for sale at aprice of $200 within a social media post. The payment manager 212 canallow the user to reserve the bicycle (i.e., place the bicycle on holdsuch that no one else can buy it) by putting an amount of money intoescrow that is earmarked for the purchase of the bicycle. The amount ofmoney the user puts into escrow can be the full $200, or a percentage ofthe full amount. At that point, the bicycle seller can agree to sell thebicycle to the user, or can refuse the sale and open the social mediapost back up. If the bicycle seller agrees to sell the bicycle to theuser, the payment manager 212 can release the escrow funds to the sellerwhen the seller transfers the bicycle to the user (e.g., when the buyerindicates that it has taken possession of the purchased product).

In some embodiments, while the bicycle is in escrow, the messagingmanager 106 can update the social media post to indicate that thebicycle is in escrow and can be expected to sell to the user.Alternatively, in some embodiments, while the bicycle is in escrow, themessaging manager 106 can hide the social media post entirely, such thatthe social media post does not appear within newsfeeds or search resultsfor any other users within the social networking system 104. Allowingpurchasers and sellers to utilize an escrow system increases the abilityof purchasers and sellers to trust that they are engaging in legitimatetransactions. The escrow system also encourages sellers to deliver goodsto purchasers who have placed money into escrow for the goods.

Furthermore, as mentioned above, and as illustrated in FIG. 2, themessaging manager 106 can also include a data storage 214. As shown, thedata storage 214 can include social media post data 216, user data 218,thread data 220, electronic message data 222, node data 224, and edgedata 226. In one or more embodiments, the social media post data 216 caninclude data representative of social media post information, such asdescribed herein. Similarly, in one or more embodiments, user data 218can include data representative of user information, such as describedherein. In one or more embodiments, thread data 220 and electronicmessage data 222 can include data representative of thread informationand electronic message information, respectively, also as describedherein. Finally, in one or more embodiments, node data 224 and edge data226 can include data representative of node information and edgeinformation, respectively, also as described herein.

As described above, the messaging manager 106 can perform variousfunctions (i.e., providing pre-populated electronic messages, sendingbroadcast electronic messages, etc.) in association with structured dataassociated with a particular social media post. In one or moreembodiments, the data storage 214 stores the structured data as node andedge information. For example, the data storage 214 may store nodes andedges in a social graph, where each edge connects two nodes, and onenode can be connected via edges to one or more additional nodes.

A node may comprise a plurality of user nodes. A user node of a socialgraph may correspond to and include user data 218. A user may be anindividual (human user), an entity (e.g., an enterprise, business, orthird-party application), or a group (e.g., of individuals or entities).A user node corresponding to a user may comprise information provided bythe user (e.g., user data 218) and information gathered by varioussystems, including the social networking system 104 (e.g., social mediapost data 216, thread data 220, electronic message data 222). Asdescribed above, the user data 218 may include the user's name, profilepicture, city of residence, contact information, birth date, gender,marital status, family status, employment, educational background,preferences, interests, and other demographic information to be includedin the user node.

Each user node of the social graph may have a corresponding web page(typically known as a “profile page”). For example, the socialnetworking system 104 can access a user node corresponding to the userand construct a profile page including the user's name, a profilepicture, and other information associated with the user. A profile pagemay include all or a portion of the information stored within a user'snode based on one or more privacy settings or other configurablesettings.

Additionally or alternatively, a node may also include a plurality ofproduct nodes. Each product node may correspond to a particular productor a group of products. A product node can include any suitableinformation associated with a product, and in some embodiments the datastorage 214 can include social media post data 216 as part of a productnode. For example, a product node can include a name of a product, adescription of the product, an identification of one or more advertisersthat provide the product, specifications for the product, priceinformation for the product, images of the product, videos of theproduct, an identification of users that own or use the product, anidentification of users that want the product, an identification ofusers that “like” the product, an identification of users that haveotherwise expressed interest in or interacted with the product, a URLaddress for a web site associated with the product, a product categoryassociated with the product, an identification of one or more relatedproducts, one or more recommendations or reviews of the product, one ormore ratings of the product, options (e.g., size options, color options,shipping options, purchase options) for the product, a manufacturer ofthe product, or any other information associated with the product.Similar to user nodes, each product node of the social graph maycorrespond to a web page or profile page where users can access thecorresponding product information. For example, the social networkingsystem 104 can access a product node corresponding to a product, andconstruct a profile page (e.g., viewable by a browser or mobileapplication) including product information from the product node.

An edge (stored in the data storage 214 as edge data 226) between a pairof nodes may represent a relationship between the pair of nodes. Forexample, an edge between two user nodes can represent a friendshipbetween two users. As another example, an edge between a user node and aproduct node can represent a relationship between a user and a product(e.g., that the user likes the product or uses/owns the product) or aninteraction between the user and the product (e.g., that the usermentioned the product, shopped for the product, viewed a profile pagefor the product, etc.). As a further example, an edge between twoproduct nodes can represent a relationship between two products (e.g.,that the products are in a common product category, that the productsare often purchased together, that users interested in one product areoften interested in the other, that the products share one or morecommon attributes, etc.). Furthermore, an edge between a product nodeand a product group node (e.g., a product node for a group or categoryof products as opposed to a single product) may represent that theproduct belongs to the product group.

Edges between user nodes and product nodes may be based on socialnetworking activity information obtained by the social networking system104. In particular, if social networking activity information indicatesan interaction between a user and a product, the social networkingsystem 104 may create an edge between a user node associated with theuser and a product node associated with the product to represent thatsocial networking activity of the user. In particular, the socialnetworking system 104 may generate an edge (e.g., stored as edge data226) between a user node and a product node to represent any socialnetworking activity related to a particular product or product category.

The degree of separation between any two nodes is defined as the minimumnumber of “hops” required to traverse the social graph from one node tothe other. A degree of separation between two nodes can be considered ameasure of relatedness between the users or the products represented bythe two nodes in the social graph. For example, two users having usernodes that are directly connected by an edge (i.e., are first-degreenodes) may be described as “connected users” or “friends.” Similarly,two users having user nodes that are connected only through another usernode (i.e., are second-degree nodes) may be described as “friends offriends.” Degrees of separation apply equally to relationships betweenuser nodes and product nodes.

For example, a user node being connected to a product node by a singledegree of separation may indicate a closer relationship or greaterproduct interest than a connection by multiple degrees of separation.The more degrees of separation between a user node and a product nodemay indicate a lower likelihood of interest by the user in thecorresponding product. Furthermore, a connection between a user node anda product node by way of another user node may indicate a likelyinterest in the product because the user is connected to another userthat is connected to the product in some way. To illustrate, a userinterested in purchasing a new smartphone may be interested to learnwhat smartphones are used by the user's friends or friends of friends.Accordingly, connections between a user node and a product node by wayof one or more other user nodes may be particularly helpful to a userresearching product information.

As discussed, the systems and methods laid out above with reference toFIGS. 1-2 can organize communication threads between a seller and one ormore potential buyers based on structured information associated with asocial media post and/or a corresponding product node. Additionally, thesystems and methods laid out above allow a seller to send a singlemessage to multiple potential buyers based on structured data associatedwith a social media post. FIGS. 3A-3E illustrate an example processdiagram of one or more example embodiments of processes implemented bythe system 100 discussed above. Consistent with system 100 illustratedin FIGS. 1 and 2, FIGS. 3A-3E illustrate the user 110 d utilizing theclient computing device 102 d and acting as a product seller, the users110 a and 110 b utilizing client computing devices 102 a and 102 brespectively and acting as potential product buyers, and the socialnetworking system 104 that supports the messaging manager 106.

In one or more embodiments, as shown in FIG. 3A, the illustrated processbegins with the product seller composing a social media post 302 (e.g.,a “for sale” post) on the client computing device 102 d. As describedabove, a product seller can compose a social media post that includesinformation advertising a product for sale. For example, the productseller can include information in the social media post including apicture and description of the product as well as other informationrelated to the product (e.g., the product price, delivery options,etc.). In one or more embodiments, the product seller or the socialnetworking system 104 can configure the social media post to include apurchase control and/or a messaging control. In one embodiment, thepurchase control can enable a purchase transaction via the socialnetworking system 104. Similarly, the messaging control can enable thecreation of a new messaging session between the seller and a potentialbuyer.

After the product seller composes a social media post 302 advertising aproduct for sale, the product seller can submit the social media post304. As described above, upon receiving a social media post, themessaging manager 106 can create and/or access structured dataassociated with the social media post. The structured data can includedata associated with the product and the seller. The structured data canalso include node and edge data associated with the social media post.

After receipt of the social media post, the messaging manager 106 canprovide the social media post to co-user newsfeeds 306. As mentionedabove, the users 110 a, 110 b, and 110 d may be “friends” (i.e., socialnetworking system co-users). Additionally or alternatively, the users110 a, 110 b, and 110 d may be common members of a group hosted by thesocial networking system 104. As described above, the social networkingsystem 104 can host groups that act as marketplaces where certain typesof products are sold and purchased.

Accordingly, upon receipt of the social media post, the GUI manager 202of the social networking application 112 installed on both clientcomputing devices 102 a, 102 b can display the social media post 308 a,308 b via a display of the client computing device 102 a, and the clientcomputing device 102 b. As mentioned above, the GUI manager 202 caninclude the provided social media post as part of a newsfeed (i.e., a“wall) on each of the client computing devices 102 a, 102 b. The GUImanager 202 can display the social media post on each of the clientcomputing devices 102 a, 102 b according to display configurationsassociated with the social networking application 112 on each of theclient computing devices 102 a, 102 b.

As described above, the social media post can include a message controlthat enables a potential buyer to message a product seller. Thus, theuser 110 a can interact with the social media post displayed on theclient computing device 102 a (i.e., the user 110 a can click the“message me” button 310). In additional or alternative embodiments, theuser's 110 a interaction with the message control can be a verbalcommand, or any other type of interaction suitable for this purpose.

In response to the user 110 a clicking the “message me” button 310, themessaging manager 106 can generate a pre-populated electronic message312. As described above, the messaging manager 106 can generate apre-populated electronic message that includes at least a portion of thestructured data associated with the social media post. For example, themessaging manager 106 can include within the pre-populated electronicmessage structured data including a picture of the product advertised inthe social media post, a description of the product advertised in thesocial media post, and other data associated with the social media post.In some embodiments, the messaging manager 106 may also include in thepre-populated electronic message other structured data that may not bedisplayed, such as node and edge information. The messaging manager 106can then provide the generated pre-populated electronic message 314 tothe client computing device 102 a, from where the user 110 a clicked the“message me” button 310.

Upon receipt of the pre-populated electronic message, the GUI manager202 of the social networking application 112 installed on the clientcomputing device 102 a can display the pre-populated electronic message316. As described above, the GUI manager 202 can displays thepre-populated electronic message 316 via a display of the clientcomputing device 102 a (e.g., via a touch screen of a mobile device).Additionally, in one or more embodiments, upon receiving thepre-populated electronic message, the GUI manager 202 can display thepre-populated electronic message 316 in a messaging graphical userinterface, rather than as part of the newsfeed. For example, uponreceiving the pre-populated electronic message, the GUI manager 202 canreplace the graphical user interface wherein the GUI manager 202displays the newsfeed with a messaging graphical user interface thatcontains the pre-populated electronic message in addition to other inputcontrols (i.e., a touch screen display keyboard, etc.).

In one or more embodiments, the GUI manager 202 can present thepre-populated electronic message to the user within a standalonededicated messaging application. For example, as mentioned above, thesocial networking application 112 can operate as more than oneexecutable within the client computing device 102 d, 102 a. Accordingly,in at least one embodiment, one executable installed on the clientcomputing device 102 d, 102 a can be a standalone alone messagingapplication that handles the messaging capabilities of the socialnetworking application 112.

At this point, as shown in FIG. 3B, the user 110 a can compose anadditional electronic message 318 via the messaging graphical userinterface provided by the GUI manager 202 on the client computing device102 a. As described above, the messaging manager 106 provides thepre-populated electronic message 314 in order to organize acommunication thread between the seller of a product and a potentialbuyer of the product. Accordingly, the messaging manager 106 providesthe pre-populated electronic message to the user 110 a of the clientcomputing device 102 a first, such that the user 110 a can compose anadditional electronic message 318 that the messaging manager 106 willeventually send in tandem with the pre-populated electronic message tothe product seller. The additional electronic message can include text(e.g., a request for additional information about the product), apurchase offer (e.g., via a purchase control included as part of themessaging graphical user interface), etc. The user 110 a can thensubmit, via the client computing device 102 a, the pre-populatedelectronic message and the additional electronic message 320 to themessaging manager 106 for delivery product seller.

When the messaging manager 106 receives the pre-populated electronicmessage and the additional electronic message, the messaging manager 106can start a new communication thread 322. As described above, themessaging manager 106 can utilize the structured data associated with apre-populated electronic message to organize one or more communicationthreads associated with a particular seller. Accordingly, upon receivingthe pre-populated electronic message and the additional electronicmessage, the messaging manager 106 can start a new communication thread322 associated with the product seller, the user 110 a of clientcomputing device 102 a, and organized according to the structured datawithin the pre-populated electronic message. In one or more embodiments,the messaging manager 106 will organize all future messages between theproduct seller and the user 110 a of client computing device 102 arelated to the product associated with the structured data within thepre-populated electronic message within the new communication thread.

After the messaging manager 106 starts the new communication thread 322,the messaging manager 106 can then provide the pre-populated electronicmessage and the additional electronic message 324 to the user 110 d(i.e., the product seller) of the client computing device 102 d. The GUImanager 202 of the social networking application 112 installed on theclient computing device 102 d can then display the pre-populatedelectronic message and the additional electronic message 326 from thepotential buyer (i.e., user 110 a) via a display associated with theclient computing device 102 d (e.g., a touch screen display of a mobiledevice). As described above, the messaging manager 106 can provide thepre-populated electronic message to the product seller (i.e., the user110 a) of the client computing device 102 d such that the product sellercan easily discern the product to which the additional electronicmessage is referring.

As described above, the messaging manager 106 can provide a social mediapost composed by the product seller to multiple co-users associated withthe product seller via the social networking system 104 (i.e., step306). Accordingly, also as described above, the GUI manager 202 of thesocial networking application 112 installed on the client computingdevice 102 b can display the social media post 308 b. At some pointfollowing this, the user 110 b of the client computing device 102 b canclick the “message me” button 328 displayed as part of the social mediapost (i.e., the messaging control included in the social media post). Inresponse to the detected interaction with the messaging control, asshown in FIG. 3C, the messaging manager can provide a pre-populatedelectronic message 330 to the client computing device 102 b. Thepre-populated electronic message the messaging manager 106 provides tothe client computing device 102 b may be the same as the pre-populatedelectronic message the messaging manager 106 provided to the clientcomputing device 102 a, as described above, or may be a differentpre-populated electronic message.

As described with reference to the client computing device 102 a, uponreceipt of the pre-populated electronic message, the GUI manager 202 ofthe social networking application 112 installed on the client computingdevice 102 b can display the pre-populated electronic message 332 with amessaging graphical user interface, as shown in FIG. 3C. The user 110 bcan utilize various input controls of the messaging graphical userinterface to compose an additional electronic message 334. Followingthis, the social networking application 112 of the client computingdevice 102 b can submit the pre-populated electronic message and theadditional electronic message 336 to the messaging manager 106.

Upon receipt of the pre-populated electronic message and the additionalelectronic message, the messaging manager 106 can start a newcommunication thread 338 associated with the product seller and the user110 b of the client computing device 102 b. This new communicationthread is separate from the communication thread described above withreference to the user 110 a of the client computing device 102 a.Accordingly, the messaging manager 106 can organize all futureelectronic messages between the user 110 b and the product seller thatare related to the product advertised in the social media post accordingto the structured data included in the pre-populated electronic message.The messaging manager 106 can then provide the pre-populated electronicmessage and the additional electronic message 340 to the clientcomputing device 102 d, where the GUI manager 202 therein can then, asshown in FIG. 3D, display the pre-populated electronic message and theadditional electronic message 342 from the user 110 b of clientcomputing device 102 b to the user 110 d (i.e., the product seller).

As mentioned above, the messaging manager 106 can enable a productseller to compose and send a broadcast electronic message to allpotential buyers who have contacted the product seller regarding aparticular product (e.g., a message informing the potential buyers of aprice reduction, or a limited supply, etc.). For example, as shown inFIG. 3D, after receiving a plurality of electronic messages from variouspotential buyers (i.e., users 110 a, 110 b), the product seller (i.e.,user 110 d) can compose a broadcast electronic message 344 utilizing theinput detector 204 and GUI manager 202 of the social networkingapplication 112 installed on the client computing device 102 d. The user110 d can then submit the broadcast electronic message 346 to themessaging manager 106.

Upon receiving the broadcast electronic message, the messaging manager106 can add the broadcast electronic message to the communicationthreads 348 that the messaging manager 106 has organized and maintainedfor the product seller and the first potential buyer (i.e., user 110 a),and for the product seller and the second potential buyer (i.e., user110 b). Following this, the messaging manager 106 can then provide thebroadcast electronic message 350 to both the client computing device 102a and the client computing device 102 b. As described above, the GUImanager 202 of both the client computing device 102 a and the clientcomputing device 102 b can display the broadcast electronic message 352a, 352 b via a display of the client computing device 102 a and theclient computing device 102 b, respectively, as shown in FIG. 3E.

Next, in the displayed embodiment in FIG. 3E, the user 110 a of theclient computing device 102 a may decide to initiate a purchase event354 with the product seller. The user 110 a may initiate the purchaseevent in several different ways. For example, in one embodiment, theuser 110 a may select a purchase control associated with the socialmedia post, or a purchase control contained within the messaginggraphical user interface. In another embodiment, the messaging manager106 may recognize purchase language in one or more electronic messagessent by the user 110 a (e.g., “I'd like to purchase this,” etc.).Additionally or alternatively, the product seller may initiate thepurchase event. For example, the product seller may select the “mark assold” button associated with the social media post.

In one embodiment, and in response to detecting the initiation of thepurchase event, the messaging manager 106 can generate a soldnotification 356. As described above, the sold notification may simplybe a message informing the one or more potential buyers that the producthas been sold (i.e., “Sorry, this product is no longer for sale,” etc.).The messaging manager 106 can generate the sold notification with nofurther input from the product seller. Furthermore, in one embodiment,the product seller can specify the contents of the sold notification.

After the messaging manager 106 has generated the sold notification, themessaging manager 106 can provide the sold notification 358 to allpotential buyers with whom the seller is included in at least onecommunication thread, besides the potential buyer who has purchased theproduct. In one embodiment, the messaging manager 106 can also add thesold notification to each of these communication threads. Alternatively,the messaging manager 106 can remove these extraneous communicationthreads from the data storage 214. Finally, the messaging manager 106can facilitate and/or process the purchase of the product 360.

As will be described in more detail below, the components of the system100 as described with regard to FIGS. 1-3 can provide, along and/or incombination with the other components, one or more graphical userinterfaces (“GUIs”). In particular, the components can allow a user tointeract with a collection of display elements for a variety ofpurposes. In particular, FIGS. 4A-6C and the description that followsillustrate various example embodiments of the user interfaces andfeatures that are in accordance with general principles as describedabove.

For example, FIGS. 4A-4H illustrate various views of GUIs provided atthe client computing devices 102 a, 102 b, 102 c, or 102 d by way of thesocial networking application 104. As mentioned above, in someembodiments, a client computing device (i.e., the client computingdevice 102 a, 102 b, 102 c, or 102 d) can implement part of all of thesystem 100. For example, FIG. 4A illustrates a computing device 400 a ofa potential product buyer (i.e., user 110 a, 110 b, or 110 c) that mayimplement one or more of the components or features of the messagingmanager 106 and/or client computing devices 102 a, 102 b, or 102 c. Asshown, the computing device 400 a is a handheld device, such as a mobilephone device (e.g., a smartphone). As used herein, the term “handhelddevice” refers to a device sized and configured to be held/operated in asingle hand of a user. In additional or alternative examples, however,any other suitable computing device, such as, but not limited to, atablet device, larger wireless device, laptop or desktop computer, apersonal digital assistant device, and/or any other suitable computingdevice can perform one or more of the processes and/or operationsdescribed herein.

As illustrated in FIG. 4A, the computing device 400 a includes a touchscreen display 402 a that can display user interfaces and by way ofwhich user input may be received and/or detected. As used herein, a“touch screen display” refers to the display of a touch screen device.In one or more embodiments, a touch screen device may be a clientcomputing device 102 a, 102 b, 102 c, or 102 d with at least one surfaceupon which a user may perform touch gestures (e.g., a laptop, a tabletcomputer, a personal digital assistant, a media player, a mobile phone)to provide user input. Additionally or alternatively, the computingdevice 400 a may include any other suitable input device, such as atouch pad or those described below in reference to FIG. 7.

In FIG. 4A, the touch screen display 402 a of the computing device 400 adisplays a newsfeed GUI 404 a provided by the GUI manager 202 installedthereon. In one or more embodiments, the GUI manager 202 provides thenewsfeed GUI 404 a in order to display one or more social media postsfrom co-users associated with the user of the computing device 400 a viathe social networking system 104. For example, as shown in FIG. 4A, thenewsfeed GUI 404 a can include a newsfeed 406 containing at least onesocial media post 408. In additional or alternative embodiments, thenewsfeed 406 can be scrollable, and can include various selectableelements.

In FIG. 4A, the embodiment illustrated includes the social media post408 that is composed by a product seller (i.e., “John Smith” is theproduct seller) advertising a product for sale within the potentialproduct buyer's newsfeed 406. After the product seller composes andsubmits the social media post 408 to the social networking system 104,the GUI manager 202 (e.g., as instructed by the social networking system104) can display the social media post 408 within the potential productbuyer's newsfeed 406. Additionally, the GUI manager 202 installed on acomputing device associated with the product seller (i.e., the clientcomputing device 102 d) can also display (e.g., as instructed by thesocial networking system 104) the social media post 408 within anewsfeed associated with the seller. In that case, the GUI manager 202may also display other controls associated with the social media post408, that are meant only for the product seller, as will be described inmore detail below.

In a social media feed associated with a potential product buyer, thesocial media post 408 can include information identifying the productseller. For example, as shown in FIG. 4A, the social media post 408within the newsfeed 406 can include user information 410. In one or moreembodiments, the user information 410 can include the seller's name(i.e., “John Smith”), a picture of the seller (i.e., a profile pictureassociated with the seller's social networking system profile), etc. Insome embodiments, the seller information 410 can also include anindication as to how long ago the seller submitted the social media post408 to the social networking system 104 (e.g., “Just Now”). Inadditional or alternative embodiments, the seller information 410 may beselectable. In that case, upon selection of the seller information 410,the GUI manager 202 may display a profile associated with the seller.

The social media post 408 can also include information related to aproduct being sold by the seller. For example, as shown in FIG. 4A, thesocial media post 408 may include a product description 412 as well as aproduct media 414 (e.g., a product image). In one or more embodiments,the product description 412 and the product media 414 can be composedand/or provided by the product seller to the social networking system104. In some embodiments, the product media 414 is a digital photographof the product. In additional or alternative embodiments, the productmedia 414 can be a digital video, a hyperlink to a webpage dedicated tothe product, a sound file, or any other type of media. In an embodiment,the product media 414 can be selectable, such that in response to adetected interaction with the product media 414, the GUI manager 202 canprovide an enlarged view of the product media 414, a separate graphicaluser interface dedicated to the product media 414, etc.

Furthermore, the social media post 408 can include one or moreselectable input controls. For example, as shown in FIG. 4A, the socialmedia post 408 can include a purchase control 416 (i.e., a “Buy This”button), and a message control 418 (i.e., a “Message Me” button). In oneor more embodiments, upon a detected interaction with the purchasecontrol 416, the messaging manager 106 can initialize one or morefunctions of the payment manager 212 in order to facilitate the purchasetransaction. For instance, in response to a detected interaction withthe purchase control 416, the payment manager 212 can provide one ormore payment controls to the social networking application 112 such thata product purchaser can provide credit card details, checking accountdetails, shipping details, etc. The payment manager 212 can theninitiate a payment (e.g., through a payment network) to the seller or adeposit into an escrow account corresponding to the purchase.

In one embodiment, the GUI manager 202 may only display the purchasecontrol 416 to within the newsfeed 406 of a social networking systemuser who the payment manager 212 has determined is within a tolerablerisk level. For example, as described above, the payment manager 212 cananalyze social networking activity information associated with a givenuser in order to determine a risk level associated with that user. Thepayment manager 212 may determine a high risk level for a user whoregularly fails to pay for purchased products, skips payments, or hasindicators of other fraudulent social networking system activity. In oneembodiment, the payment manager 212 may also contact a third partysystem in order to determine a credit score associated with a givenuser. If the payment manager 212 determines a high risk level for apotential buyer of the product advertised in the social media post 408,the GUI manager 202 may not provide the purchase control 416 within thesocial media post 408.

In one or more embodiments, upon a detected interaction with themessaging control 418, the GUI manager 202 of the social networking app112 installed on a client computing device associated with the potentialproduct buyer (i.e., client computing device 102 a) can provide agraphical user interface for the potential product buyer to compose amessage to the product seller. For example, as shown in FIG. 4B, the GUImanager 202 can provide the messaging graphical user interface 404 bwithin the touch screen display 402 of the computing device 400 a. Inone or more embodiments, the messaging graphical user interface 404 bmay be associated with the social networking app 112, and the socialnetworking system 104, respectively. In additional or alternativeembodiments, the messaging graphical user interface 404 b may beassociated with some third party application. In that case, the GUImanager 202 can provide the messaging graphical user interface 404 b viaa connection with the third party application.

In one embodiment, it is possible that the messaging graphical userinterface 404 b is part of a dedicated messaging application eitherseparate from, or part of the social networking application 112.Accordingly, it is possible that the GUI manager 202 may require thepotential buyer to install additional software before providing themessaging graphical user interface 404 b. In that case, the socialnetworking application 112 can prompt the potential buyer to install theneeded software before continuing. After the potential buyer installsthe software, the GUI manager 202 can provide the messaging graphicaluser interface 404 b.

As shown in FIG. 4B, the GUI manager 202 can automatically provide anelectronic message address 420 within the messaging graphical userinterface 404 b. In one or more embodiments, the electronic messageaddress 420 indicates a recipient of any electronic message composedwithin the messaging graphical user interface 404 b. For example, inresponse to the potential product buyer interacting with the messagecontrol 418 of the product seller's social media post 408, as shown inFIG. 4A, the GUI manager 202 can provide the electronic message address420 for the product seller (e.g., “John Smith”) as part of the messaginggraphical user interface 404 b, as shown in FIG. 4B. In one embodiment,the social networking application 112 can address any electronic messagecomposed within the messaging graphical user interface 404 b to thesocial networking system user associated with the electronic messageaddress 420.

In one or more embodiments, the GUI manager 202 can provide acommunication thread 422 within the messaging graphical user interface404 b. For example, the GUI manager 202 can include electronic messagessent and received by the social networking application 112 installed onthe computing device 400 a within the communication thread 422. In oneembodiment, the GUI manager 202 organizes the communication thread 422such that electronic messages sent from the computing device 400 a aredisplayed along one side of the communication thread 422 within thetouch screen display 402, and electronic messages received by at thecomputing device 400 a are displayed along the other side of thecommunication thread 422 within the touch screen display 402.Furthermore, in one embodiment, the GUI manager 202 organizes thecommunication thread 422 such that newest electronic messages are addedto the bottom of the communication thread 422, with oldest messagedisplayed at the top of the communication thread 422. In an alternativeembodiment, the GUI manager 202 may organize the communication thread422 in any other manner so as to indicate both the origin and chronologyof the electronic messages within the communication thread 422.

As mentioned above, in response to the potential product buyerinteracting with the message control 418 of the product seller's socialmedia post 408, the messaging manager 106 can provide a pre-populatedelectronic message 424 in order to help the product seller and thepotential buyer quickly determine a product associated with thecommunication thread 422. Although the pre-populated electronic message424 shown in FIG. 4B includes only a picture of the product described inthe product seller's social media post 408 (i.e., the product media 414from the social media post 408), the messaging manager 106 can includestructured data along with the product media 414 as part of thepre-populated electronic message 424 to create a rich object for thepre-populated electronic message 424. For example, the pre-populatedelectronic message 424 may also include information such as, but notlimited to, node and edge information associated with the social mediapost 408, profile information associated with the product seller,profile information associated with the potential buyer, etc. Themessaging manager 106 can include all this structured data as part ofthe pre-populated electronic message 424, even though the GUI manager202 only displays the product media 414 within the communication thread422. In additional or alternative embodiments, the GUI manager 202 maydisplay other portions of the structured data associated with the socialmedia post 408 as part of the pre-populated electronic message 424(i.e., the name of the product, the description of the product, etc.).In one embodiment, the pre-populated electronic message 424 isselectable, such that in response to a detected selection of thepre-populated electronic message 424, the GUI manager 202 can provide aseparate GUI with further details related to the pre-populatedelectronic message 424 (i.e., the social media post 408, profileinformation for the product seller, etc.).

Also as mentioned above, the potential product buyer can utilize themessaging graphical user interface 404 b to compose an electronicmessage associated with the pre-populated electronic message 424. Forexample, as shown in FIG. 4B, the messaging graphical user interface 404b can include a text input control 426, as well as additional inputcontrols 428 and a touch screen keyboard 432. In one or moreembodiments, the potential product buyer can input text in the textinput control 426 (i.e., “How much would you take?”) by utilizing thetouch screen keyboard 432. Additionally or alternatively, as discussedabove, the user input detector 204 associated with the computing device400 a can also detect sound inputs (i.e., talk-to-text inputs), or othertypes of inputs from the potential product buyer in order to compose anelectronic message associated with the pre-populated electronic message424.

The GUI manager 202 can provide other types of input options in responseto a detected interaction with any of the additional input controls 428.For example, the GUI manager 202 can provide the touch screen keyboard432 in response to a detected interaction with the input control 430 a.Similarly, the GUI manager 202 may provide purchase input controls inresponse to a detected interaction with the input control 430 b. Asdiscussed above, the GUI manager 202 may only provide the input control430 b in response to a determination by the payment manager 212 that thepotential buyer is within an acceptable risk level. Additionally oralternatively, in some embodiments, the GUI manager 202 may only providethe input control 430 b in response to a determination by the messagingmanager 106 that the communication thread 422 has commercial intent. Inother words, the GUI manager 202 may only provide the input control 430b in response to determining that the communication thread 422 containsthe pre-populated electronic message 424, contains purchase language, isbetween two social networking system users who have transacted apurchase previously, etc. Furthermore, the GUI manager 202 may provide aphotograph input control, a media library input control, an emoticoninput control or a thumbs-up input control in response to a detectedinteraction with input controls 430 c, 430 d, 430 e, or 430 f,respectively.

The potential product buyer can submit both the pre-populated electronicmessage 424 as well as the composed electronic message (i.e., the textmessage within the text input control 426) to the messaging manger 106for delivery to the product seller (i.e., the social networking systemuser associated with the electronic message address 420). For example,the potential product buyer can submit the pre-populated electronicmessage 424 and the electronic message associated with the pre-populatedelectronic message 424 by tapping a return or send button on the touchscreen keyboard 432. In additional or alternative embodiments, thepotential product buyer can submit the pre-populated electronic message424 and the electronic message associated with the pre-populatedelectronic message 424 in another way, such as by speaking a command,double-tapping the return button, etc.

As described above, in response to receiving a pre-populated electronicmessage and a electronic message associated with the pre-populatedelectronic message, the messaging manager 106 can organize and store anew communication thread associated with the potential buyer, theproduct seller, and the product, according to the structured dataincluded with the pre-populated electronic message. Accordingly, in oneor more embodiments, the GUI manager 202 of the social networkingapplication 112 installed on a computing device associated with theproduct seller (i.e., client computing device 102 d) can utilize thiscommunication thread information in order to organize one or moremessaging graphical user interfaces for the product seller. For example,as shown in FIG. 4C, the GUI manager 202 can organize communicationthreads based on given products within a product listing graphical userinterface 404 c displayed within the touch screen display 402 bassociated with the product seller's computing device 400 b.

As illustrated in FIG. 4C, the GUI manager 202 can include a productmessage list 434 within the product listing graphical user interface 404c. In one or more embodiments, the product message list 434 can includeone or more product communication thread groups 436 a-436 d. Forexample, in one embodiment, each product communication thread group 436a, 436 b, 436 c, and 436 d is representative of a sub-listing ofcommunication threads between the seller and one or more potentialbuyers, wherein each communication thread in the sub-listing is relatedto the product denoted by the product communication thread group 436 a,436 b, 436 c, or 436 d. To illustrate, in response to a detectedinteraction with the product communication thread group 436 a (i.e.,where the product is a bike), the GUI manager 202 may provide anothergraphical user interface to the product seller that lists everycommunication thread that includes the seller and is related to thebike.

In one embodiment, each product communication thread group 436 a-436 dcan also include a thread summary 438 a, 438 b, 438 c, or 438 d,respectively. The thread summaries 438 a-438 d can include informationthat serves to orient the product seller to the product associated withthe product communication thread groups 436 a-436 d, as well as toinform the product seller regarding when the communication threadsassociated with each product communication thread group 436 a-436 d werelast active. For example, the thread summary 438 b informs the productseller that the communication threads represented by the productcommunication thread group 436 b are focused on the “Tent,” and that atleast one of those communication threads was last active “Last week.”The thread summary 438 a, 438 b, 438 c, or 438 d can also notify theproduct seller if there is a new (i.e., unread) electronic message inany communication thread represented by the product communication threadgroups 436 a-436 d. For example, the thread summery 438 a includes theindicator “New Message” to inform the product seller that there is a newelectronic message in one of the communication threads represented bythe product communication thread group 436 a.

As mentioned above, in response to a detected interaction with one ofthe product communication thread groups 436 a-436 d, the GUI manager 202associated with the computing device 400 b can provide a graphical userinterface listing individual communication threads associated with aparticular product communication thread group. For example, in responseto the product seller tapping the product communication thread group 436a, the GUI manager 202 can provide the potential buyer graphical userinterface 404 d on the touch screen display 402 b of the computingdevice 400 b, as illustrated in FIG. 4D. As shown in FIG. 4D, thepotential buyer graphical user interface 404 d can include a potentialbuyer thread list 440, along with the pre-populated electronic message424. As described above, the GUI manager 202 can provide thepre-populated electronic message 424 within the potential buyergraphical user interface 404 d in order to provide the product sellerwith context for all the communication threads listed therein. In oneembodiment, the pre-populated electronic message 424 can be selectablesuch that the GUI manager 202 provides a more full product descriptionin response to a detected interaction with the pre-populated electronicmessage 424.

The potential buyer thread list 440 can include one or more potentialbuyer communication threads 442 a-442 c. For example, as shown in theembodiment illustrated in FIG. 4D, the product communication threadgroup 436 a associated with the bike (e.g., as specified by thepre-populated electronic message 424) contains three potential buyercommunication threads 442 a, 442 b, and 442 c. Each of the potentialbuyer communication threads 442 a, 442 b, and 442 c is between theproduct seller and a potential buyer, and is related to the bike. Inother words, each of the potential buyer communication threads 442 a,442 b, and 442 c was initiated when the potential buyer associated witheach potential buyer communication thread 442 a-442 c tapped the“Message Me” button included with the social media post 408, and isorganized according to the pre-populated electronic message 424 includedtherein.

In some embodiments, each potential buyer communication thread 442 a-442c includes a potential buyer summary. For example, as shown in FIG. 4D,the GUI manager 202 can display a potential buyer summary 444 a, 444 b,or 444 c in association with the potential buyer communication thread442 a, 442 b, or 442 c, respectively. Each potential buyer summary 444a-444 c can include profile information associated with the potentialbuyer who began the communication thread (i.e., the potential buyer'sname and/or profile picture). In one or more additional embodiments,each potential buyer summary 444 a-444 c can also include an indicationas to how long ago the last message was sent by either the potentialbuyer or by the product seller (e.g., “20 mins,” “45 mins,” “50 mins”),as well as at least a portion of the last electronic message sent in thecommunication thread (e.g., “How much . . . ,” “How long have . . . ,”“Mileage?”). Furthermore, in some embodiments, a potential buyer summarycan also include an indicator informing the product seller that a newmessage exists in a particular communication thread (e.g., “New”).

Although a particular arrangement of lists (i.e., the product messagelist 434) and sub-lists (i.e., the potential buyer communication thread440), the GUI manager 202 may provide an alternative organization of theinformation presented therein. For example, in another embodiment (notshown), the GUI manager 202 may not provide the product message list434, but rather may only provide the potential buyer communicationthread 440. In that case, the GUI manager 202 may group potential buyercommunication threads based on the common products discussed therein.Additionally or alternatively, the GUI manager 202 may provide a pictureof the product (i.e., taken from the pre-populated electronic message424) as part of each potential buyer communication thread that isrelated to that particular product.

In one or more embodiments, the potential buyer graphical user interface404 d can also include a broadcast message control. For example, asshown in FIG. 4D, the GUI manager 202 can provide the broadcast messagecontrol 446 (e.g., the “Message All” button) within the potential buyergraphical user interface 404 d. In one or more embodiments, thebroadcast message control 446 allows the product seller to compose asingle message that the messaging manager 106 delivers to each potentialbuyer associated with the potential buyer communication threads 442a-442 d in the potential buyer thread list 440. In some embodiments, inresponse to a detected interaction with the broadcast message control446, the GUI manager 202 may provide a separate graphical user interfacefor composing the broadcast message. Alternatively, in response to adetected interaction with the broadcast message control 446, the GUImanager 202 may provide a text input control within the potential buyergraphical user interface 404 d.

Although FIGS. 4C and 4D illustrate how the messaging manager 106 andthe social networking application 112 work together to provide organizedlists of communication threads to a product seller, it should be notedthat the message manager 106 and the social networking application 112can also provide the same organization to a potential product buyer. Forexample, in one embodiment, the GUI manager 202 associated with acomputing device of a potential product buyer can organize a productlisting graphical user interface for the potential product buyer thatgroups communication threads according to various products regardingwhich the potential product buyer has contacted product sellers.Additionally, or alternatively, the GUI manager 202 associated with thecomputing device of the potential product buyer can further organize thecommunication threads based on each product seller contacted by thepotential product buyer.

As mentioned above, in response to a detected selection of one of thepotential buyer communication threads 442 a-442 c, the GUI manager 202can provide the product seller's messaging graphical user interfaceincluding the communication thread referenced by the selected potentialbuyer communication thread 442 a, 442 b, or 442 c. For example, as shownin FIG. 4E, in response to the product seller's detected selection ofthe potential buyer communication thread 442 a, the GUI manager 202 canprovide the messaging graphical user interface 404 b′ associated withthe product seller on the touch screen display 402 b of the seller'scomputing device 400 b. Also as shown in FIG. 4E, the GUI manager 202can provide the communication thread 422′ between the product seller andthe potential buyer (i.e., “Susan” as indicated by the electronicmessage address 420′). It should be noted that the potential buyer“Susan” illustrated in FIG. 4E is the same as the potential buyer whoutilizes the computing device 400 a in FIGS. 4A and 4B. Accordingly, thebeginning of the communication thread 422′ between the product sellerand the potential buyer starts with the pre-populated electronic message424 and the electronic message associated with the pre-populatedelectronic message, sent by the potential buyer (i.e., “How much wouldyou take?” as illustrated in FIG. 4B).

Following the initial receipt at the computing device 400 b of thepre-populated electronic message 424 and the electronic messageassociated with the pre-populated electronic message 424, the productseller can respond to the potential product buyer with one or moreelectronic messages. For example, as shown in FIG. 4E, in response tothe initial pre-populated electronic message 424 and the electronicmessage associated with the pre-populated electronic message 424 (i.e.,“How much would you take?”), the product seller responds with anelectronic message (i.e., “I'm offering this bike for $150.”). Theembodiment illustrated in FIG. 4E also includes a further responseelectronic message 448 from the potential product buyer (i.e., “I'lltake it!”).

As described above, the messaging manager 106 can detect purchase eventswithin a social networking system newsfeed or within a communicationthread. The messaging manager 106 can then perform one of a variety ofactions in response to the detected purchase event. In one or moreembodiments, a purchase event that the messaging manager 106 can detectwithin a communication thread can be an electronic message featuringtransactional language that is final in its tone. For example, asillustrated in FIG. 4E, the messaging manager 106 can recognize theelectronic message 448 (i.e., “I'll take it!”) as containingtransactional language. In response to determining the electronicmessage 448 is a purchase event, the messaging manager 106 can performactions such as, but not limited to, deleting the social media postassociated with the pre-populated electronic message 424 from allnewsfeeds, updating the social media post associated with thepre-populated electronic message 424 in all newsfeed to include anindicator that the product is about to be sold, sending an electronicmessage to the product seller (e.g., via the social networking system104, or via an email, SMS text, etc.), and so forth. As described above,the messaging manager 106 may take the social networking activityinformation associated with both the potential buyer and the productseller into account in order to determine what kinds of language qualifyas a purchase event.

Additionally or alternatively, in response to detecting a purchase eventbetween a particular potential buyer and the product seller, themessaging manager 106 can generate an invoice for the sale of theproduct. For example, as shown in FIG. 4E, in response to the purchaseevent detected in the electronic message 448, the messaging manager 104can automatically generate an invoice 450. In one or more embodiments,the messaging manager 104 can deliver the invoice 450 to the potentialproduct buyer as a file attached to an electronic message and/oravailable by way of the communication thread 422′. Additionally oralternatively, the messaging manager 104 can deliver the invoice 450 tothe potential product buyer via an email or SMS text message. Theinvoice 450 may be an electronic file, or a link to a separate graphicaluser interface. In one embodiment, the invoice 450 can containinformation taken from the structured data associated with the socialmedia post 408 (e.g., the product description and product picture, etc.)as well as other transaction information that can be configured by theproduct seller, such as, but not limited to, product sellers businessname and address, the seller's preferred method of payment, etc. Theinvoice 450 illustrated in FIG. 4E can be selectable and downloadable bythe potential buyer. Alternatively, in one embodiment, the invoice 450generated by the messaging manager 106 may simply be text that isincluded in an electronic message.

In some embodiments, rather than allowing the messaging manager 106 toautomatically delete or update the social media post 408, the productseller can manually manage the social media post 408. For example, asshown in FIG. 4F, messaging manager 106 can display the social mediapost 408′ within the newsfeed 406′ of the newsfeed graphical userinterface 404 a′ displayed on the touch screen display 402 b of acomputing device 400 b associated with the product seller. In one ormore embodiments, the messaging manager 106 may include the sameinformation included in the social media post 408 provided to potentialproduct buyers (i.e., the seller information 410′, the productdescription 412′, and the product media 414′), but may also provideadditional controls specifically for the product seller. For example,the messaging manager 106 can provide a sold control 452 as well as adelete control 454 associated with the social media post 408′ only tothe product seller.

In one or more embodiments, the messaging manager 106 provides thedelete control 454 (i.e., the “remove post” button) in order to enablethe product seller to remove the social media post 408′ from allnewsfeeds. For example, in response to a detected interaction with thedelete control 454, the messaging manager 106 can update the newsfeedsof every social networking system user who is associated with theproduct seller to remove all instances of the social media post 408′. Inother words, the messaging manager 106 would update the newsfeeds ofeach co-user or group member associated with the product seller suchthat each co-user or group member would no longer be able to see or findthe social media post 408′ within their newsfeeds. In other embodiments,in response to a detected interaction with the delete control 454, themessaging manager 106 may simply disable the various controls associatedwith all the instances of social media post 408′ across all co-user'snewsfeeds (i.e., such as the purchase control 416 and the messagecontrol 418 illustrated in FIG. 4A).

In one or more embodiments, the messaging manager 106 provides the soldcontrol 452 (i.e., the “Mark as Sold” button) in order to enable theproduct seller to indicate that the product advertised in the socialmedia post 408′ is no longer available. For example, as shown in FIG.4F, in response to a detected interaction with the sold control 452, themessaging manager 106 can update every instance of the social media post408′ to indicate that the product is no longer available. Additionallyor alternatively, in response to a detected interaction with the soldcontrol 452, the messaging manager 106 can update the structured dataassociated with the social media post 408′ to indicate that the productis no longer available.

In an additional embodiment, in response to a detected interaction withthe sold control 452 and/or in response to a request from the productseller, the messaging manager 106 can send a sold notification to one ormore potential product buyers who have started communication threadswith the product seller with regard to the product advertised in thesocial media post 408′. For example, as described above with referenceto FIG. 4D, the product seller received electronic messages from threepotential buyers (i.e., “Susan Parr,” “Adam Haws,” and “Justin Lowe”).Than as described above with reference to FIG. 4E, the product waspurchased by one of these potential buyers (i.e., “Susan Parr”).Accordingly, in response to a detected interaction with the sold control452, the messaging manager 106 can send a sold notification to the otherpotential buyers (i.e., “Adam Haws” and “Justin Lowe”).

Additionally, in response to a detected interaction with the soldcontrol 452, the messaging manager 106 may prompt the product seller foradditional information. For example, in one embodiment, in response to adetected interaction with the sold control 452, the messaging manager106 can prompt the product seller for information such as the name ofthe product buyer, the cost of the product, the amount of time theproduct was advertised before it was sold, etc. The messaging manager106 may prompt the product seller for this information in order toupdate the structured data associated with the social media post 408′,or simply for the purpose of tracking metrics internally.

In some embodiments, the messaging manager 106 can incentivize theproduct seller to mark a product as sold. For example, in one or moreembodiments, the messaging manager 106 may provide a seller scoreassociated with a product seller that reflects to the general membershipof the social networking system 104 how many products the product selleradvertises, how many products the product seller sells, and how well theproduct seller handles the purchase transactions. In that case, in orderto maintain a good score, the product seller would be incentivized tomark as sold each product that the product seller successfully sells.

For example, FIGS. 4G and 4H illustrate communication threads 422″ and422′″ within the messaging graphical user interfaces 404 b″ and 404 b′″on the touch screen displays 402 c and 402 d of the computing devices400 c (e.g., which may represent computing device 102 b) and 400 d(e.g., which may represent computing device 102 c), respectively (e.g.,wherein the computing device 400 c may be associated with user 110 b,“Adam Hawes,” and the computing device 400 d may be associated with user110 c, “Justin Lowe”). As shown in FIGS. 4G and 4H, the messagingmanager 106 and the social networking application 112 work together toorganize the communication threads 422″ and 422′″ according to thepre-populated electronic message 424 and/or interactions with theproduct seller. In response to the detected interaction with the soldcontrol 452, as shown in FIG. 4F, the purchase event, as shown in FIG.4E, or an interaction with the input control 430 b, as shown in FIG. 4B,the messaging manager 106 can generate the sold notification 456illustrated in FIGS. 4G and 4H. In one or more embodiments, themessaging manager 106 can also add the sold notification 456 to each ofthe communication threads 422″ and 422′″.

In one embodiment, the messaging manager 106 may also provide anotification via the social networking application 112 installed on boththe computing device 400 d and the computing device 400 d. For example,in some embodiments, the potential buyer and/or the product seller maybe inactive within a communication thread for long periods of time. Inthat case, the messaging manager 106 can provide a notification (e.g., apush notification, an email notification, a pop-up message, an SMS textmessage, etc.) informing the potential buyer that a product thepotential buyer was interested in is no longer available.

Additionally, once a product has been sold, the messaging manager 106may manage any further electronic messages related to the product,without any further input from the product seller. For example, inresponse to receiving an electronic message related to a social mediapost featuring a product that has already been sold, the messagingmanager 106 can automatically reply to the received electronic messagewith a reply such as, “Sorry, this product is no longer available.” Inone or more embodiments, the product seller can configure this automaticreply. In this way, the product seller is not bothered by electronicmessages that are related to a product that the seller no longer has forsale.

FIGS. 1-4H, the corresponding text, and the examples, provide a numberof different methods, systems, and devices for managing electronicmessages via a social networking system. In addition to the foregoing,embodiments can also be described in terms of flowcharts comprising actsand steps in a method for accomplishing a particular result. Forexample, FIGS. 5-6 may be performed with less or more steps/acts or thesteps/acts may be performed in differing orders. Additionally, thesteps/acts described herein may be repeated or performed in parallelwith one another or in parallel with different instances of the same orsimilar steps/acts.

FIG. 5 illustrates a flowchart of one example method 500 of managingelectronic messages via a social networking system. The method 500includes an act 510 of providing a social media post. In particular, theact 510 can involve providing a social media post 408 to a first user,wherein the social media post 408 is associated with a second user andcomprises structured data (i.e., as part of the pre-populated electronicmessage 424) associated with a product being sold by the second user. Inone or more embodiments, providing the social media post 408 to a firstuser further includes providing data associated with the second user.

The method 500 further includes an act 520 of providing a messagecontrol. In particular, the act 520 can involve providing a messagecontrol 416 associated with the social media post 408. In one or moreembodiments, providing a message control 416 associated with the socialmedia post 408 further includes providing a selectable message buttonwithin a graphical user interface.

Additionally, the method 500 includes an act 530 of detecting aselection of the message control. In particular, the act 530 can involvedetecting a selection of the message control 416 by the first user. Inone or more embodiments, detecting a selection of the message control416 by the first user can include detecting a touch gesture selection ofa selectable message button with a graphical user interface 404 a.

Furthermore, the method 500 also includes an act 540 of providing apre-populated electronic message. In particular, the act 540 can involveproviding, in response to the detected selection of the message control416 and to the first user, a pre-populated electronic message 424,wherein the pre-populated electronic message 424 comprises at least aportion of the structured data associated with the product. In one ormore embodiments, providing, to the first user, a pre-populatedelectronic message 424 further comprises providing, to the first user,the pre-populated electronic message 424 within a dedicated messagingapplication. In one embodiment, providing, to the first user, thepre-populated electronic message 424, wherein the pre-populatedelectronic message 424 comprises at least a portion of the structureddata associated with the product can occur automatically and withouthuman intervention.

Additionally, the method 500 includes an act 550 of receiving anelectronic message. In particular, the act 550 can involve receiving,from the first user, an electronic message associated with thepre-populated electronic message 424. In one or more embodiments,receiving, from the first user, the electronic message associated withthe pre-populated electronic message comprises receiving the electronicmessage via the dedicated messaging application.

The method 500 also includes an act 560 of sending the electronicmessage and the pre-populated electronic message. In particular, the act560 can involve sending, to the second user, the electronic message andthe pre-populated electronic message 424. In one or more embodiment,sending, to the second user, the electronic message and thepre-populated electronic message 424 comprises sending the electronicmessage and the pre-populated electronic message 424 to a dedicatedmessaging application associated with the second user.

The method 500 can also include an act of maintaining the electronicmessage and the pre-populated electronic message 424 as part of acommunication thread 422 between the first user and the second user.Furthermore, the method 500 can further comprise adding thecommunication thread 422 between the first user and the second user to amaintained plurality of communication threads (e.g., potential buyercommunication threads 442 a, 442 b, 442 c) associated with the seconduser, the social media post, and the plurality of other users. In one ormore embodiments, the method 500 also includes the steps of receiving,from the second user, a broadcast electronic message 456 related to thesocial media post, and adding the broadcast electronic message 456related to the social media post to the maintained plurality ofcommunication threads (e.g., as shown in FIGS. 4G and 4H). Additionally,in one embodiment, the method 500 can also include providing anotification related to the broadcast electronic message to the firstuser and the plurality of users.

FIG. 6 illustrates a flowchart of one example method 600 of managingelectronic messages via a social networking system. The method 600includes an act 610 of maintaining a social media post. In particular,the act 610 includes an act of maintaining a social media post, whereinthe social media post comprises structured data associated with aproduct being sold by a seller. In one or more embodiments, thestructured data further comprises data associated with the seller.

The method 600 further includes an act 620 of maintaining a plurality ofcommunication threads. In particular, the act 620 can includemaintaining a plurality of communication threads, wherein each of theplurality of communication threads references the social media post andis associated with the seller and one of the plurality of potentialbuyers. In one embodiment, maintaining a plurality of communicationthreads further comprises maintaining the plurality of communicationthreads first according to the product being sold by the seller (i.e.,product communication thread groups 436 a-436 d), and second accordingto one of the plurality of potential buyers (i.e., potential buyercommunication threads 442 a-442 c). Furthermore, in one embodiment,maintaining a plurality of communication threads can be accomplishedautomatically without human intervention.

Furthermore, the method 600 includes an act 630 of detecting a purchaseevent. In particular, the act 630 can include detecting a purchase eventassociated with the social media post and a particular potential buyerfrom the plurality of potential buyers. In one or more embodiments,detecting a purchase event includes at least one of detecting a sendingof an electronic message containing language indicating a purchase(e.g., as in electronic message 448) between the seller and theparticular potential buyer, detecting a selection of a purchase control416 by the particular potential buyer, detecting a sending of a productinvoice 450 by the seller, or detecting a selection of a mark as soldbutton (i.e., the sold control 452) by the seller. In one embodiment,detecting a purchase event associated with the social media post and aparticular potential buyer from the plurality of potential buyers can beaccomplished automatically without human intervention.

The method 600 also includes an act 640 of delivering a soldnotification. In particular, the act 640 can involve delivering a soldnotification 456 to each of the plurality of potential buyers notincluding the particular potential buyer, wherein the sold notification456 references the social media post 408 and the seller associated withthe social media post. In one or more embodiments, the act 640 canfurther comprise, in response to delivering the sold notification toeach of the plurality of potential buyers not including the particularpotential buyer, updating the social media post 408 to reflect thepurchase event. In one embodiment, updating the social media postcomprises updating the structured data of the social media post 408 tofurther include data associated with the particular potential buyer.Additionally, in one embodiment, delivering the sold notification 456 toeach of the plurality of potential buyers not including the particularpotential buyer further comprises delivering the sold notification 456within a dedicated messaging application.

Furthermore, the method 600 can also include providing a notificationrelated to the sold notification 456 to each of the plurality ofpotential buyers not including the particular potential buyer.Additionally, the method 600 can include receiving, from a user, a newelectronic message regarding the social media post addressed to theseller, identifying a reply for the new electronic message, wherein thereply comprises language informing the user that the product associatedwith the social media post 408 is no longer for sale, and sending theidentified reply to the user. Finally, in one embodiment, identifyingthe reply comprises identifying a pre-configured reply provided by theseller, or identifying an automatically generated reply.

Embodiments of the present disclosure may comprise or utilize a specialpurpose or general-purpose computer including computer hardware, suchas, for example, one or more processors and system memory, as discussedin greater detail below. Embodiments within the scope of the presentdisclosure also include physical and other computer-readable media forcarrying or storing computer-executable instructions and/or datastructures. In particular, one or more of the processes described hereinmay be implemented at least in part as instructions embodied in anon-transitory computer-readable medium and executable by one or morecomputing devices (e.g., any of the media content access devicesdescribed herein). In general, a processor (e.g., a microprocessor)receives instructions, from a non-transitory computer-readable medium,(e.g., a memory, etc.), and executes those instructions, therebyperforming one or more processes, including one or more of the processesdescribed herein.

Computer-readable media can be any available media that can be accessedby a general purpose or special purpose computer system.Computer-readable media that store computer-executable instructions arenon-transitory computer-readable storage media (devices).Computer-readable media that carry computer-executable instructions aretransmission media. Thus, by way of example, and not limitation,embodiments of the disclosure can comprise at least two distinctlydifferent kinds of computer-readable media: non-transitorycomputer-readable storage media (devices) and transmission media.

Non-transitory computer-readable storage media (devices) includes RAM,ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM),Flash memory, phase-change memory (“PCM”), other types of memory, otheroptical disk storage, magnetic disk storage or other magnetic storagedevices, or any other medium which can be used to store desired programcode means in the form of computer-executable instructions or datastructures and which can be accessed by a general purpose or specialpurpose computer.

A “network” is defined as one or more data links that enable thetransport of electronic data between computer systems and/or modulesand/or other electronic devices. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as a transmissionmedium. Transmissions media can include a network and/or data linkswhich can be used to carry desired program code means in the form ofcomputer-executable instructions or data structures and which can beaccessed by a general purpose or special purpose computer. Combinationsof the above should also be included within the scope ofcomputer-readable media.

Further, upon reaching various computer system components, program codemeans in the form of computer-executable instructions or data structurescan be transferred automatically from transmission media tonon-transitory computer-readable storage media (devices) (or viceversa). For example, computer-executable instructions or data structuresreceived over a network or data link can be buffered in RAM within anetwork interface module (e.g., a “NIC”), and then eventuallytransferred to computer system RAM and/or to less volatile computerstorage media (devices) at a computer system. Thus, it should beunderstood that non-transitory computer-readable storage media (devices)can be included in computer system components that also (or evenprimarily) utilize transmission media.

Computer-executable instructions comprise, for example, instructions anddata which, when executed at a processor, cause a general purposecomputer, special purpose computer, or special purpose processing deviceto perform a certain function or group of functions. In someembodiments, computer-executable instructions are executed on ageneral-purpose computer to turn the general-purpose computer into aspecial purpose computer implementing elements of the disclosure. Thecomputer executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, or evensource code. Although the subject matter has been described in languagespecific to structural features and/or methodological acts, it is to beunderstood that the subject matter defined in the appended claims is notnecessarily limited to the described features or acts described above.Rather, the described features and acts are disclosed as example formsof implementing the claims.

Those skilled in the art will appreciate that the disclosure may bepracticed in network computing environments with many types of computersystem configurations, including, personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, tablets, pagers, routers, switches, and the like. The disclosuremay also be practiced in distributed system environments where local andremote computer systems, which are linked (either by hardwired datalinks, wireless data links, or by a combination of hardwired andwireless data links) through a network, both perform tasks. In adistributed system environment, program modules may be located in bothlocal and remote memory storage devices.

Embodiments of the present disclosure can also be implemented in cloudcomputing environments. In this description, “cloud computing” isdefined as a model for enabling on-demand network access to a sharedpool of configurable computing resources. For example, cloud computingcan be employed in the marketplace to offer ubiquitous and convenienton-demand access to the shared pool of configurable computing resources.The shared pool of configurable computing resources can be rapidlyprovisioned via virtualization and released with low management effortor service provider interaction, and then scaled accordingly.

A cloud-computing model can be composed of various characteristics suchas, for example, on-demand self-service, broad network access, resourcepooling, rapid elasticity, measured service, and so forth. Acloud-computing model can also expose various service models, such as,for example, Software as a Service (“SaaS”), Platform as a Service(“PaaS”), and Infrastructure as a Service (“IaaS”). A cloud-computingmodel can also be deployed using different deployment models such asprivate cloud, community cloud, public cloud, hybrid cloud, and soforth. In this description and in the claims, a “cloud-computingenvironment” is an environment in which cloud computing is employed.

FIG. 7 illustrates a block diagram of exemplary computing device 700that may be configured to perform one or more of the processes describedabove. One will appreciate that one or more computing devices such asthe computing device 700 may implement the system 100. As shown by FIG.7, the computing device 700 can comprise a processor 702, a memory 704,a storage device 706, an I/O interface 708, and a communicationinterface 710, which may be communicatively coupled by way of acommunication infrastructure 712. While an exemplary computing device700 is shown in FIG. 7, the components illustrated in FIG. 7 are notintended to be limiting. Additional or alternative components may beused in other embodiments. Furthermore, in certain embodiments, thecomputing device 700 can include fewer components than those shown inFIG. 7. Components of the computing device 700 shown in FIG. 7 will nowbe described in additional detail.

In one or more embodiments, the processor 702 includes hardware forexecuting instructions, such as those making up a computer program. Asan example and not by way of limitation, to execute instructions, theprocessor 702 may retrieve (or fetch) the instructions from an internalregister, an internal cache, the memory 704, or the storage device 706and decode and execute them. In one or more embodiments, the processor702 may include one or more internal caches for data, instructions, oraddresses. As an example and not by way of limitation, the processor 702may include one or more instruction caches, one or more data caches, andone or more translation lookaside buffers (TLBs). Instructions in theinstruction caches may be copies of instructions in the memory 704 orthe storage 706.

The memory 704 may be used for storing data, metadata, and programs forexecution by the processor(s). The memory 704 may include one or more ofvolatile and non-volatile memories, such as Random Access Memory(“RAM”), Read Only Memory (“ROM”), a solid state disk (“SSD”), Flash,Phase Change Memory (“PCM”), or other types of data storage. The memory704 may be internal or distributed memory.

The storage device 706 includes storage for storing data orinstructions. As an example and not by way of limitation, storage device706 can comprise a non-transitory storage medium described above. Thestorage device 706 may include a hard disk drive (HDD), a floppy diskdrive, flash memory, an optical disc, a magneto-optical disc, magnetictape, or a Universal Serial Bus (USB) drive or a combination of two ormore of these. The storage device 706 may include removable ornon-removable (or fixed) media, where appropriate. The storage device706 may be internal or external to the computing device 700. In one ormore embodiments, the storage device 706 is non-volatile, solid-statememory. In other embodiments, the storage device 706 includes read-onlymemory (ROM). Where appropriate, this ROM may be mask programmed ROM,programmable ROM (PROM), erasable PROM (EPROM), electrically erasablePROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or acombination of two or more of these.

The I/O interface 708 allows a user to provide input to, receive outputfrom, and otherwise transfer data to and receive data from computingdevice 700. The I/O interface 708 may include a mouse, a keypad or akeyboard, a touch screen, a camera, an optical scanner, networkinterface, modem, other known I/O devices or a combination of such I/Ointerfaces. The I/O interface 708 may include one or more devices forpresenting output to a user, including, but not limited to, a graphicsengine, a display (e.g., a display screen), one or more output drivers(e.g., display drivers), one or more audio speakers, and one or moreaudio drivers. In certain embodiments, the I/O interface 708 isconfigured to provide graphical data to a display for presentation to auser. The graphical data may be representative of one or more graphicaluser interfaces and/or any other graphical content as may serve aparticular implementation.

The communication interface 710 can include hardware, software, or both.In any event, the communication interface 710 can provide one or moreinterfaces for communication (such as, for example, packet-basedcommunication) between the computing device 700 and one or more othercomputing devices or networks. As an example and not by way oflimitation, the communication interface 710 may include a networkinterface controller (NIC) or network adapter for communicating with anEthernet or other wire-based network or a wireless NIC (WNIC) orwireless adapter for communicating with a wireless network, such as aWI-FI.

Additionally or alternatively, the communication interface 710 mayfacilitate communications with an ad hoc network, a personal areanetwork (PAN), a local area network (LAN), a wide area network (WAN), ametropolitan area network (MAN), or one or more portions of the Internetor a combination of two or more of these. One or more portions of one ormore of these networks may be wired or wireless. As an example, thecommunication interface 710 may facilitate communications with awireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FInetwork, a WI-MAX network, a cellular telephone network (such as, forexample, a Global System for Mobile Communications (GSM) network), orother suitable wireless network or a combination thereof.

Additionally, the communication interface 710 may facilitatecommunications various communication protocols. Examples ofcommunication protocols that may be used include, but are not limitedto, data transmission media, communications devices, TransmissionControl Protocol (“TCP”), Internet Protocol (“IP”), File TransferProtocol (“FTP”), Telnet, Hypertext Transfer Protocol (“HTTP”),Hypertext Transfer Protocol Secure (“HTTPS”), Session InitiationProtocol (“SIP”), Simple Object Access Protocol (“SOAP”), ExtensibleMark-up Language (“XML”) and variations thereof, Simple Mail TransferProtocol (“SMTP”), Real-Time Transport Protocol (“RTP”), User DatagramProtocol (“UDP”), Global System for Mobile Communications (“GSM”)technologies, Code Division Multiple Access (“CDMA”) technologies, TimeDivision Multiple Access (“TDMA”) technologies, Short Message Service(“SMS”), Multimedia Message Service (“MMS”), radio frequency (“RF”)signaling technologies, Long Term Evolution (“LTE”) technologies,wireless communication technologies, in-band and out-of-band signalingtechnologies, and other suitable communications networks andtechnologies.

The communication infrastructure 712 may include hardware, software, orboth that couples components of the computing device 700 to each other.As an example and not by way of limitation, the communicationinfrastructure 712 may include an Accelerated Graphics Port (AGP) orother graphics bus, an Enhanced Industry Standard Architecture (EISA)bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, anIndustry Standard Architecture (ISA) bus, an INFINIBAND interconnect, alow-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture(MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express(PCIe) bus, a serial advanced technology attachment (SATA) bus, a VideoElectronics Standards Association local (VLB) bus, or another suitablebus or a combination thereof.

As mentioned above, the system 100 can comprise a social networkingsystem. A social-networking system may enable its users (such as personsor organizations) to interact with the system and with each other. Thesocial-networking system may, with input from a user, create and storein the social-networking system a user profile associated with the user.The user profile may include demographic information,communication-channel information, and information on personal interestsof the user. The social-networking system may also, with input from auser, create and store a record of relationships of the user with otherusers of the social-networking system, as well as provide services(e.g., posts, photo-sharing, event organization, messaging, games, oradvertisements) to facilitate social interaction between or among users.

The social-networking system may store records of users andrelationships between users in a social graph comprising a plurality ofnodes and a plurality of edges connecting the nodes. The nodes maycomprise a plurality of user nodes and a plurality of concept nodes. Auser node of the social graph may correspond to a user of thesocial-networking system. A user may be an individual (human user), anentity (e.g., an enterprise, business, or third party application), or agroup (e.g., of individuals or entities). A user node corresponding to auser may comprise information provided by the user and informationgathered by various systems, including the social-networking system.

For example, the user may provide his or her name, profile picture, cityof residence, contact information, birth date, gender, marital status,family status, employment, educational background, preferences,interests, and other demographic information to be included in the usernode. Each user node of the social graph may have a corresponding webpage (typically known as a profile page). In response to a requestincluding a user name, the social-networking system can access a usernode corresponding to the user name, and construct a profile pageincluding the name, a profile picture, and other information associatedwith the user. A profile page of a first user may display to a seconduser all or a portion of the first user's information based on one ormore privacy settings by the first user and the relationship between thefirst user and the second user.

A concept node may correspond to a concept of the social-networkingsystem. For example, a concept can represent a real-world entity, suchas a movie, a song, a sports team, a celebrity, a group, a restaurant,or a place or a location. An administrative user of a concept nodecorresponding to a concept may create or update the concept node byproviding information of the concept (e.g., by filling out an onlineform), causing the social-networking system to associate the informationwith the concept node. For example and without limitation, informationassociated with a concept can include a name or a title, one or moreimages (e.g., an image of cover page of a book), a web site (e.g., anURL address) or contact information (e.g., a phone number, an emailaddress). Each concept node of the social graph may correspond to a webpage. For example, in response to a request including a name, thesocial-networking system can access a concept node corresponding to thename, and construct a web page including the name and other informationassociated with the concept.

An edge between a pair of nodes may represent a relationship between thepair of nodes. For example, an edge between two user nodes can representa friendship between two users. For another example, thesocial-networking system may construct a web page (or a structureddocument) of a concept node (e.g., a restaurant, a celebrity),incorporating one or more selectable option or selectable elements(e.g., “like”, “check in”) in the web page. A user can access the pageusing a web browser hosted by the user's client device and select aselectable option or selectable element, causing the client device totransmit to the social-networking system a request to create an edgebetween a user node of the user and a concept node of the concept,indicating a relationship between the user and the concept (e.g., theuser checks in a restaurant, or the user “likes” a celebrity).

As an example, a user may provide (or change) his or her city ofresidence, causing the social-networking system to create an edgebetween a user node corresponding to the user and a concept nodecorresponding to the city declared by the user as his or her city ofresidence. In addition, the degree of separation between any two nodesis defined as the minimum number of hops required to traverse the socialgraph from one node to the other. A degree of separation between twonodes can be considered a measure of relatedness between the users orthe concepts represented by the two nodes in the social graph. Forexample, two users having user nodes that are directly connected by anedge (i.e., are first-degree nodes) may be described as “connectedusers” or “friends.” Similarly, two users having user nodes that areconnected only through another user node (i.e., are second-degree nodes)may be described as “friends of friends.”

A social-networking system may support a variety of applications, suchas photo sharing, on-line calendars and events, gaming, instantmessaging, and advertising. For example, the social-networking systemmay also include media sharing capabilities. Also, the social-networkingsystem may allow users to post photographs and other multimedia contentitems to a user's profile page (typically known as “wall posts” or“timeline posts”) or in a photo album, both of which may be accessibleto other users of the social-networking system depending upon the user'sconfigured privacy settings. The social-networking system may also allowusers to configure events. For example, a first user may configure anevent with attributes including time and date of the event, location ofthe event and other users invited to the event. The invited users mayreceive invitations to the event and respond (such as by accepting theinvitation or declining it). Furthermore, the social-networking systemmay allow users to maintain a personal calendar. Similarly to events,the calendar entries may include times, dates, locations and identitiesof other users.

FIG. 8 illustrates an example network environment 800 of asocial-networking system. Network environment 800 includes a clientsystem 806, a social-networking system 802, and a third-party system 808connected to each other by a network 804. Although FIG. 8 illustrates aparticular arrangement of client system 806, social-networking system802, third-party system 808, and network 804, this disclosurecontemplates any suitable arrangement of client system 806,social-networking system 802, third-party system 808, and network 804.As an example and not by way of limitation, two or more of client system806, social-networking system 802, and third-party system 808 may beconnected to each other directly, bypassing network 804. As anotherexample, two or more of client system 806, social-networking system 802,and third-party system 808 may be physically or logically co-locatedwith each other in whole or in part. Moreover, although FIG. 8illustrates a particular number of client systems 806, social-networkingsystems 802, third-party systems 808, and networks 804, this disclosurecontemplates any suitable number of client systems 806,social-networking systems 802, third-party systems 808, and networks804. As an example and not by way of limitation, network environment 800may include multiple client system 806, social-networking systems 802,third-party systems 808, and networks 804.

This disclosure contemplates any suitable network 804. As an example andnot by way of limitation, one or more portions of network 804 mayinclude an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), a portion of the Internet, a portion of the Public SwitchedTelephone Network (PSTN), a cellular telephone network, or a combinationof two or more of these. Network 804 may include one or more networks804.

Links may connect client system 806, social-networking system 802, andthird-party system 808 to communication network 804 or to each other.This disclosure contemplates any suitable links. In particularembodiments, one or more links include one or more wireline (such as forexample Digital Subscriber Line (DSL) or Data Over Cable ServiceInterface Specification (DOCSIS)), wireless (such as for example Wi-Fior Worldwide Interoperability for Microwave Access (WiMAX)), or optical(such as for example Synchronous Optical Network (SONET) or SynchronousDigital Hierarchy (SDH)) links. In particular embodiments, one or morelinks each include an ad hoc network, an intranet, an extranet, a VPN, aLAN, a WLAN, a WAN, a WWAN, a MAN, a portion of the Internet, a portionof the PSTN, a cellular technology-based network, a satellitecommunications technology-based network, another link, or a combinationof two or more such links. Links need not necessarily be the samethroughout network environment 800. One or more first links may differin one or more respects from one or more second links.

In particular embodiments, client system 806 may be an electronic deviceincluding hardware, software, or embedded logic components or acombination of two or more such components and capable of carrying outthe appropriate functionalities implemented or supported by clientsystem 806. As an example and not by way of limitation, a client system806 may include a computer system such as a desktop computer, notebookor laptop computer, netbook, a tablet computer, e-book reader, GPSdevice, camera, personal digital assistant (PDA), handheld electronicdevice, cellular telephone, smartphone, other suitable electronicdevice, or any suitable combination thereof. This disclosurecontemplates any suitable client systems 806. A client system 806 mayenable a network user at client system 806 to access network 804. Aclient system 806 may enable its user to communicate with other users atother client systems 806.

In particular embodiments, client system 806 may include a web browser,such as MICROSOFT INTERNET EXPLORER, GOOGLE CHROME or MOZILLA FIREFOX,and may have one or more add-ons, plug-ins, or other extensions, such asTOOLBAR or YAHOO TOOLBAR. A user at client system 806 may enter aUniform Resource Locator (URL) or other address directing the webbrowser to a particular server (such as server, or a server associatedwith a third-party system 808), and the web browser may generate a HyperText Transfer Protocol (HTTP) request and communicate the HTTP requestto server. The server may accept the HTTP request and communicate toclient system 806 one or more Hyper Text Markup Language (HTML) filesresponsive to the HTTP request. Client system 806 may render a webpagebased on the HTML files from the server for presentation to the user.This disclosure contemplates any suitable webpage files. As an exampleand not by way of limitation, webpages may render from HTML files,Extensible Hyper Text Markup Language (XHTML) files, or ExtensibleMarkup Language (XML) files, according to particular needs. Such pagesmay also execute scripts such as, for example and without limitation,those written in JAVASCRIPT, JAVA, MICROSOFT SILVERLIGHT, combinationsof markup language and scripts such as AJAX (Asynchronous JAVASCRIPT andXML), and the like. Herein, reference to a webpage encompasses one ormore corresponding webpage files (which a browser may use to render thewebpage) and vice versa, where appropriate.

In particular embodiments, social-networking system 802 may be anetwork-addressable computing system that can host an online socialnetwork. Social-networking system 802 may generate, store, receive, andsend social-networking data, such as, for example, user-profile data,concept-profile data, social-graph information, or other suitable datarelated to the online social network. Social-networking system 802 maybe accessed by the other components of network environment 800 eitherdirectly or via network 804. In particular embodiments,social-networking system 802 may include one or more servers. Eachserver may be a unitary server or a distributed server spanning multiplecomputers or multiple datacenters. Servers may be of various types, suchas, for example and without limitation, web server, news server, mailserver, message server, advertising server, file server, applicationserver, exchange server, database server, proxy server, another serversuitable for performing functions or processes described herein, or anycombination thereof. In particular embodiments, each server may includehardware, software, or embedded logic components or a combination of twoor more such components for carrying out the appropriate functionalitiesimplemented or supported by server. In particular embodiments,social-networking system 802 may include one or more data stores. Datastores may be used to store various types of information. In particularembodiments, the information stored in data stores may be organizedaccording to specific data structures. In particular embodiments, eachdata store may be a relational, columnar, correlation, or other suitabledatabase. Although this disclosure describes or illustrates particulartypes of databases, this disclosure contemplates any suitable types ofdatabases. Particular embodiments may provide interfaces that enable aclient system 806, a social-networking system 802, or a third-partysystem 808 to manage, retrieve, modify, add, or delete, the informationstored in data store.

In particular embodiments, social-networking system 802 may store one ormore social graphs in one or more data stores. In particularembodiments, a social graph may include multiple nodes—which may includemultiple user nodes (each corresponding to a particular user) ormultiple concept nodes (each corresponding to a particular concept)—andmultiple edges connecting the nodes. Social-networking system 802 mayprovide users of the online social network the ability to communicateand interact with other users. In particular embodiments, users may jointhe online social network via social-networking system 802 and then addconnections (e.g., relationships) to a number of other users ofsocial-networking system 802 whom they want to be connected to. Herein,the term “friend” may refer to any other user of social-networkingsystem 802 with whom a user has formed a connection, association, orrelationship via social-networking system 802.

In particular embodiments, social-networking system 802 may provideusers with the ability to take actions on various types of items orobjects, supported by social-networking system 802. As an example andnot by way of limitation, the items and objects may include groups orsocial networks to which users of social-networking system 802 maybelong, events or calendar entries in which a user might be interested,computer-based applications that a user may use, transactions that allowusers to buy or sell items via the service, interactions withadvertisements that a user may perform, or other suitable items orobjects. A user may interact with anything that is capable of beingrepresented in social-networking system 802 or by an external system ofthird-party system 808, which is separate from social-networking system802 and coupled to social-networking system 802 via a network 804.

In particular embodiments, social-networking system 802 may be capableof linking a variety of entities. As an example and not by way oflimitation, social-networking system 802 may enable users to interactwith each other as well as receive content from third-party systems 808or other entities, or to allow users to interact with these entitiesthrough an application programming interfaces (API) or othercommunication channels.

In particular embodiments, a third-party system 808 may include one ormore types of servers, one or more data stores, one or more interfaces,including but not limited to APIs, one or more web services, one or morecontent sources, one or more networks, or any other suitable components,e.g., that servers may communicate with. A third-party system 808 may beoperated by a different entity from an entity operatingsocial-networking system 802. In particular embodiments, however,social-networking system 802 and third-party systems 808 may operate inconjunction with each other to provide social-networking services tousers of social-networking system 802 or third-party systems 808. Inthis sense, social-networking system 802 may provide a platform, orbackbone, which other systems, such as third-party systems 808, may useto provide social-networking services and functionality to users acrossthe Internet.

In particular embodiments, a third-party system 808 may include athird-party content object provider. A third-party content objectprovider may include one or more sources of content objects, which maybe communicated to a client system 806. As an example and not by way oflimitation, content objects may include information regarding things oractivities of interest to the user, such as, for example, movie showtimes, movie reviews, restaurant reviews, restaurant menus, productinformation and reviews, or other suitable information. As anotherexample and not by way of limitation, content objects may includeincentive content objects, such as coupons, discount tickets, giftcertificates, or other suitable incentive objects.

In particular embodiments, social-networking system 802 also includesuser-generated content objects, which may enhance a user's interactionswith social-networking system 802. User-generated content may includeanything a user can add, upload, send, or “post” to social-networkingsystem 802. As an example and not by way of limitation, a usercommunicates posts to social-networking system 802 from a client system806. Posts may include data such as status updates or other textualdata, location information, photos, videos, links, music or othersimilar data or media. Content may also be added to social-networkingsystem 802 by a third-party through a “communication channel,” such as anewsfeed or stream.

In particular embodiments, social-networking system 802 may include avariety of servers, sub-systems, programs, modules, logs, and datastores. In particular embodiments, social-networking system 802 mayinclude one or more of the following: a web server, action logger,API-request server, relevance-and-ranking engine, content-objectclassifier, notification controller, action log,third-party-content-object-exposure log, inference module,authorization/privacy server, search module, advertisement-targetingmodule, user-interface module, user-profile store, connection store,third-party content store, or location store. Social-networking system802 may also include suitable components such as network interfaces,security mechanisms, load balancers, failover servers,management-and-network-operations consoles, other suitable components,or any suitable combination thereof. In particular embodiments,social-networking system 802 may include one or more user-profile storesfor storing user profiles. A user profile may include, for example,biographic information, demographic information, behavioral information,social information, or other types of descriptive information, such aswork experience, educational history, hobbies or preferences, interests,affinities, or location. Interest information may include interestsrelated to one or more categories. Categories may be general orspecific. As an example and not by way of limitation, if a user “likes”an article about a brand of shoes the category may be the brand, or thegeneral category of “shoes” or “clothing.” A connection store may beused for storing connection information about users. The connectioninformation may indicate users who have similar or common workexperience, group memberships, hobbies, educational history, or are inany way related or share common attributes. The connection informationmay also include user-defined connections between different users andcontent (both internal and external). A web server may be used forlinking social-networking system 802 to one or more client systems 806or one or more third-party system 808 via network 804. The web servermay include a mail server or other messaging functionality for receivingand routing messages between social-networking system 802 and one ormore client systems 806. An API-request server may allow a third-partysystem 808 to access information from social-networking system 802 bycalling one or more APIs. An action logger may be used to receivecommunications from a web server about a user's actions on or offsocial-networking system 802. In conjunction with the action log, athird-party-content-object log may be maintained of user exposures tothird-party-content objects. A notification controller may provideinformation regarding content objects to a client system 806.Information may be pushed to a client system 806 as notifications, orinformation may be pulled from client system 806 responsive to a requestreceived from client system 806. Authorization servers may be used toenforce one or more privacy settings of the users of social-networkingsystem 802. A privacy setting of a user determines how particularinformation associated with a user can be shared. The authorizationserver may allow users to opt in to or opt out of having their actionslogged by social-networking system 802 or shared with other systems(e.g., third-party system 808), such as, for example, by settingappropriate privacy settings. Third-party-content-object stores may beused to store content objects received from third parties, such as athird-party system 808. Location stores may be used for storing locationinformation received from client systems 806 associated with users.Advertisement-pricing modules may combine social information, thecurrent time, location information, or other suitable information toprovide relevant advertisements, in the form of notifications, to auser.

FIG. 9 illustrates example social graph 900. In particular embodiments,social-networking system 802 may store one or more social graphs 900 inone or more data stores. In particular embodiments, social graph 900 mayinclude multiple nodes—which may include multiple user nodes 902 ormultiple concept nodes 904—and multiple edges 906 connecting the nodes.Example social graph 900 illustrated in FIG. 9 is shown, for didacticpurposes, in a two-dimensional visual map representation. In particularembodiments, a social-networking system 802, client system 806, orthird-party system 808 may access social graph 900 and relatedsocial-graph information for suitable applications. The nodes and edgesof social graph 900 may be stored as data objects, for example, in adata store (such as a social-graph database). Such a data store mayinclude one or more searchable or query able indexes of nodes or edgesof social graph 900.

In particular embodiments, a user node 902 may correspond to a user ofsocial-networking system 802. As an example and not by way oflimitation, a user may be an individual (human user), an entity (e.g.,an enterprise, business, or third-party application), or a group (e.g.,of individuals or entities) that interacts or communicates with or oversocial-networking system 802. In particular embodiments, when a userregisters for an account with social-networking system 802,social-networking system 802 may create a user node 902 corresponding tothe user, and store the user node 902 in one or more data stores. Usersand user nodes 902 described herein may, where appropriate, refer toregistered users and user nodes 902 associated with registered users. Inaddition or as an alternative, users and user nodes 902 described hereinmay, where appropriate, refer to users that have not registered withsocial-networking system 802. In particular embodiments, a user node 902may be associated with information provided by a user or informationgathered by various systems, including social-networking system 802. Asan example and not by way of limitation, a user may provide his or hername, profile picture, contact information, birth date, sex, maritalstatus, family status, employment, education background, preferences,interests, or other demographic information. In particular embodiments,a user node 902 may be associated with one or more data objectscorresponding to information associated with a user. In particularembodiments, a user node 902 may correspond to one or more webpages.

In particular embodiments, a concept node 904 may correspond to aconcept. As an example and not by way of limitation, a concept maycorrespond to a place (such as, for example, a movie theater,restaurant, landmark, or city); a website (such as, for example, awebsite associated with social-network system 802 or a third-partywebsite associated with a web-application server); an entity (such as,for example, a person, business, group, sports team, or celebrity); aresource (such as, for example, an audio file, video file, digitalphoto, text file, structured document, or application) which may belocated within social-networking system 802 or on an external server,such as a web-application server; real or intellectual property (suchas, for example, a sculpture, painting, movie, game, song, idea,photograph, or written work); a game; an activity; an idea or theory;another suitable concept; or two or more such concepts. A concept node904 may be associated with information of a concept provided by a useror information gathered by various systems, including social-networkingsystem 802. As an example and not by way of limitation, information of aconcept may include a name or a title; one or more images (e.g., animage of the cover page of a book); a location (e.g., an address or ageographical location); a website (which may be associated with a URL);contact information (e.g., a phone number or an email address); othersuitable concept information; or any suitable combination of suchinformation. In particular embodiments, a concept node 904 may beassociated with one or more data objects corresponding to informationassociated with concept node 904. In particular embodiments, a conceptnode 904 may correspond to one or more webpages.

In particular embodiments, a node in social graph 900 may represent orbe represented by a webpage (which may be referred to as a “profilepage”). Profile pages may be hosted by or accessible tosocial-networking system 802. Profile pages may also be hosted onthird-party websites associated with a third-party server 808. As anexample and not by way of limitation, a profile page corresponding to aparticular external webpage may be the particular external webpage andthe profile page may correspond to a particular concept node 904.Profile pages may be viewable by all or a selected subset of otherusers. As an example and not by way of limitation, a user node 902 mayhave a corresponding user-profile page in which the corresponding usermay add content, make declarations, or otherwise express himself orherself. As another example and not by way of limitation, a concept node904 may have a corresponding concept-profile page in which one or moreusers may add content, make declarations, or express themselves,particularly in relation to the concept corresponding to concept node904.

In particular embodiments, a concept node 904 may represent athird-party webpage or resource hosted by a third-party system 808. Thethird-party webpage or resource may include, among other elements,content, a selectable or other icon, or other inter-actable object(which may be implemented, for example, in JavaScript, AJAX, or PHPcodes) representing an action or activity. As an example and not by wayof limitation, a third-party webpage may include a selectable icon suchas “like,” “check in,” “eat,” “recommend,” or another suitable action oractivity. A user viewing the third-party webpage may perform an actionby selecting one of the icons (e.g., “eat”), causing a client system 806to send to social-networking system 802 a message indicating the user'saction. In response to the message, social-networking system 802 maycreate an edge (e.g., an “eat” edge) between a user node 902corresponding to the user and a concept node 904 corresponding to thethird-party webpage or resource and store edge 906 in one or more datastores.

In particular embodiments, a pair of nodes in social graph 900 may beconnected to each other by one or more edges 906. An edge 906 connectinga pair of nodes may represent a relationship between the pair of nodes.In particular embodiments, an edge 906 may include or represent one ormore data objects or attributes corresponding to the relationshipbetween a pair of nodes. As an example and not by way of limitation, afirst user may indicate that a second user is a “friend” of the firstuser. In response to this indication, social-networking system 802 maysend a “friend request” to the second user. If the second user confirmsthe “friend request,” social-networking system 802 may create an edge906 connecting the first user's user node 902 to the second user's usernode 902 in social graph 900 and store edge 906 as social-graphinformation in one or more of data stores. In the example of FIG. 9,social graph 900 includes an edge 906 indicating a friend relationbetween user nodes 902 of user “A” and user “B” and an edge indicating afriend relation between user nodes 902 of user “C” and user “B.”Although this disclosure describes or illustrates particular edges 906with particular attributes connecting particular user nodes 902, thisdisclosure contemplates any suitable edges 906 with any suitableattributes connecting user nodes 902. As an example and not by way oflimitation, an edge 906 may represent a friendship, family relationship,business or employment relationship, fan relationship, followerrelationship, visitor relationship, subscriber relationship,superior/subordinate relationship, reciprocal relationship,non-reciprocal relationship, another suitable type of relationship, ortwo or more such relationships. Moreover, although this disclosuregenerally describes nodes as being connected, this disclosure alsodescribes users or concepts as being connected. Herein, references tousers or concepts being connected may, where appropriate, refer to thenodes corresponding to those users or concepts being connected in socialgraph 900 by one or more edges 906.

In particular embodiments, an edge 906 between a user node 902 and aconcept node 904 may represent a particular action or activity performedby a user associated with user node 902 toward a concept associated witha concept node 904. As an example and not by way of limitation, asillustrated in FIG. 9, a user may “like,” “attended,” “played,”“listened,” “cooked,” “worked at,” or “watched” a concept, each of whichmay correspond to a edge type or subtype. A concept-profile pagecorresponding to a concept node 904 may include, for example, aselectable “check in” icon (such as, for example, a clickable “check in”icon) or a selectable “add to favorites” icon. Similarly, after a userclicks these icons, social-networking system 802 may create a “favorite”edge or a “check in” edge in response to a user's action correspondingto a respective action. As another example and not by way of limitation,a user (user “C”) may listen to a particular song (“Ramble On”) using aparticular application (SPOTIFY, which is an online music application).In this case, social-networking system 802 may create a “listened” edge906 and a “used” edge (as illustrated in FIG. 9) between user nodes 902corresponding to the user and concept nodes 904 corresponding to thesong and application to indicate that the user listened to the song andused the application. Moreover, social-networking system 802 may createa “played” edge 906 (as illustrated in FIG. 9) between concept nodes 904corresponding to the song and the application to indicate that theparticular song was played by the particular application. In this case,“played” edge 906 corresponds to an action performed by an externalapplication (SPOTIFY) on an external audio file (the song “Imagine”).Although this disclosure describes particular edges 906 with particularattributes connecting user nodes 902 and concept nodes 904, thisdisclosure contemplates any suitable edges 906 with any suitableattributes connecting user nodes 902 and concept nodes 904. Moreover,although this disclosure describes edges between a user node 902 and aconcept node 904 representing a single relationship, this disclosurecontemplates edges between a user node 902 and a concept node 904representing one or more relationships. As an example and not by way oflimitation, an edge 906 may represent both that a user likes and hasused at a particular concept. Alternatively, another edge 906 mayrepresent each type of relationship (or multiples of a singlerelationship) between a user node 902 and a concept node 904 (asillustrated in FIG. 9 between user node 902 for user “E” and conceptnode 904 for “SPOTIFY”).

In particular embodiments, social-networking system 802 may create anedge 906 between a user node 902 and a concept node 904 in social graph900. As an example and not by way of limitation, a user viewing aconcept-profile page (such as, for example, by using a web browser or aspecial-purpose application hosted by the user's client system 806) mayindicate that he or she likes the concept represented by the conceptnode 904 by clicking or selecting a “Like” icon, which may cause theuser's client system 806 to send to social-networking system 802 amessage indicating the user's liking of the concept associated with theconcept-profile page. In response to the message, social-networkingsystem 802 may create an edge 906 between user node 902 associated withthe user and concept node 904, as illustrated by “like” edge 906 betweenthe user and concept node 904. In particular embodiments,social-networking system 802 may store an edge 906 in one or more datastores. In particular embodiments, an edge 906 may be automaticallyformed by social-networking system 802 in response to a particular useraction. As an example and not by way of limitation, if a first useruploads a picture, watches a movie, or listens to a song, an edge 906may be formed between user node 902 corresponding to the first user andconcept nodes 904 corresponding to those concepts. Although thisdisclosure describes forming particular edges 906 in particular manners,this disclosure contemplates forming any suitable edges 906 in anysuitable manner.

In particular embodiments, an advertisement may be text (which may beHTML-linked), one or more images (which may be HTML-linked), one or morevideos, audio, one or more ADOBE FLASH files, a suitable combination ofthese, or any other suitable advertisement in any suitable digitalformat presented on one or more webpages, in one or more e-mails, or inconnection with search results requested by a user. In addition or as analternative, an advertisement may be one or more sponsored stories(e.g., a news-feed or ticker item on social-networking system 802). Asponsored story may be a social action by a user (such as “liking” apage, “liking” or commenting on a post on a page, RSVPing to an eventassociated with a page, voting on a question posted on a page, checkingin to a place, using an application or playing a game, or “liking” orsharing a website) that an advertiser promotes, for example, by havingthe social action presented within a pre-determined area of a profilepage of a user or other page, presented with additional informationassociated with the advertiser, bumped up or otherwise highlightedwithin news feeds or tickers of other users, or otherwise promoted. Theadvertiser may pay to have the social action promoted. As an example andnot by way of limitation, advertisements may be included among thesearch results of a search-results page, where sponsored content ispromoted over non-sponsored content.

In particular embodiments, an advertisement may be requested for displaywithin social-networking-system webpages, third-party webpages, or otherpages. An advertisement may be displayed in a dedicated portion of apage, such as in a banner area at the top of the page, in a column atthe side of the page, in a GUI of the page, in a pop-up window, in adrop-down menu, in an input field of the page, over the top of contentof the page, or elsewhere with respect to the page. In addition or as analternative, an advertisement may be displayed within an application. Anadvertisement may be displayed within dedicated pages, requiring theuser to interact with or watch the advertisement before the user mayaccess a page or utilize an application. The user may, for example viewthe advertisement through a web browser.

A user may interact with an advertisement in any suitable manner. Theuser may click or otherwise select the advertisement. By selecting theadvertisement, the user may be directed to (or a browser or otherapplication being used by the user) a page associated with theadvertisement. At the page associated with the advertisement, the usermay take additional actions, such as purchasing a product or serviceassociated with the advertisement, receiving information associated withthe advertisement, or subscribing to a newsletter associated with theadvertisement. An advertisement with audio or video may be played byselecting a component of the advertisement (like a “play button”).Alternatively, by selecting the advertisement, social-networking system802 may execute or modify a particular action of the user.

An advertisement may also include social-networking-system functionalitythat a user may interact with. As an example and not by way oflimitation, an advertisement may enable a user to “like” or otherwiseendorse the advertisement by selecting an icon or link associated withendorsement. As another example and not by way of limitation, anadvertisement may enable a user to search (e.g., by executing a query)for content related to the advertiser. Similarly, a user may share theadvertisement with another user (e.g., through social-networking system802) or RSVP (e.g., through social-networking system 802) to an eventassociated with the advertisement. In addition or as an alternative, anadvertisement may include social-networking-system context directed tothe user. As an example and not by way of limitation, an advertisementmay display information about a friend of the user withinsocial-networking system 802 who has taken an action associated with thesubject matter of the advertisement.

In particular embodiments, social-networking system 802 may determinethe social-graph affinity (which may be referred to herein as“affinity”) of various social-graph entities for each other. Affinitymay represent the strength of a relationship or level of interestbetween particular objects associated with the online social network,such as users, concepts, content, actions, advertisements, other objectsassociated with the online social network, or any suitable combinationthereof. Affinity may also be determined with respect to objectsassociated with third-party systems 808 or other suitable systems. Anoverall affinity for a social-graph entity for each user, subjectmatter, or type of content may be established. The overall affinity maychange based on continued monitoring of the actions or relationshipsassociated with the social-graph entity. Although this disclosuredescribes determining particular affinities in a particular manner, thisdisclosure contemplates determining any suitable affinities in anysuitable manner.

In particular embodiments, social-networking system 802 may measure orquantify social-graph affinity using an affinity coefficient (which maybe referred to herein as “coefficient”). The coefficient may representor quantify the strength of a relationship between particular objectsassociated with the online social network. The coefficient may alsorepresent a probability or function that measures a predictedprobability that a user will perform a particular action based on theuser's interest in the action. In this way, a user's future actions maybe predicted based on the user's prior actions, where the coefficientmay be calculated at least in part a the history of the user's actions.Coefficients may be used to predict any number of actions, which may bewithin or outside of the online social network. As an example and not byway of limitation, these actions may include various types ofcommunications, such as sending messages, posting content, or commentingon content; various types of a observation actions, such as accessing orviewing profile pages, media, or other suitable content; various typesof coincidence information about two or more social-graph entities, suchas being in the same group, tagged in the same photograph, checked-in atthe same location, or attending the same event; or other suitableactions. Although this disclosure describes measuring affinity in aparticular manner, this disclosure contemplates measuring affinity inany suitable manner.

In particular embodiments, social-networking system 802 may use avariety of factors to calculate a coefficient. These factors mayinclude, for example, user actions, types of relationships betweenobjects, location information, other suitable factors, or anycombination thereof. In particular embodiments, different factors may beweighted differently when calculating the coefficient. The weights foreach factor may be static or the weights may change according to, forexample, the user, the type of relationship, the type of action, theuser's location, and so forth. Ratings for the factors may be combinedaccording to their weights to determine an overall coefficient for theuser. As an example and not by way of limitation, particular useractions may be assigned both a rating and a weight while a relationshipassociated with the particular user action is assigned a rating and acorrelating weight (e.g., so the weights total 100%). To calculate thecoefficient of a user towards a particular object, the rating assignedto the user's actions may comprise, for example, 60% of the overallcoefficient, while the relationship between the user and the object maycomprise 40% of the overall coefficient. In particular embodiments, thesocial-networking system 802 may consider a variety of variables whendetermining weights for various factors used to calculate a coefficient,such as, for example, the time since information was accessed, decayfactors, frequency of access, relationship to information orrelationship to the object about which information was accessed,relationship to social-graph entities connected to the object, short- orlong-term averages of user actions, user feedback, other suitablevariables, or any combination thereof. As an example and not by way oflimitation, a coefficient may include a decay factor that causes thestrength of the signal provided by particular actions to decay withtime, such that more recent actions are more relevant when calculatingthe coefficient. The ratings and weights may be continuously updatedbased on continued tracking of the actions upon which the coefficient isbased. Any type of process or algorithm may be employed for assigning,combining, averaging, and so forth the ratings for each factor and theweights assigned to the factors. In particular embodiments,social-networking system 802 may determine coefficients usingmachine-learning algorithms trained on historical actions and past userresponses, or data farmed from users by exposing them to various optionsand measuring responses. Although this disclosure describes calculatingcoefficients in a particular manner, this disclosure contemplatescalculating coefficients in any suitable manner.

In particular embodiments, social-networking system 802 may calculate acoefficient based on a user's actions. Social-networking system 802 maymonitor such actions on the online social network, on a third-partysystem 808, on other suitable systems, or any combination thereof. Anysuitable type of user actions may be tracked or monitored. Typical useractions include viewing profile pages, creating or posting content,interacting with content, joining groups, listing and confirmingattendance at events, checking-in at locations, liking particular pages,creating pages, and performing other tasks that facilitate socialaction. In particular embodiments, social-networking system 802 maycalculate a coefficient based on the user's actions with particulartypes of content. The content may be associated with the online socialnetwork, a third-party system 808, or another suitable system. Thecontent may include users, profile pages, posts, news stories,headlines, instant messages, chat room conversations, emails,advertisements, pictures, video, music, other suitable objects, or anycombination thereof. Social-networking system 802 may analyze a user'sactions to determine whether one or more of the actions indicate anaffinity for subject matter, content, other users, and so forth. As anexample and not by way of limitation, if a user may make frequentlyposts content related to “coffee” or variants thereof, social-networkingsystem 802 may determine the user has a high coefficient with respect tothe concept “coffee”. Particular actions or types of actions may beassigned a higher weight and/or rating than other actions, which mayaffect the overall calculated coefficient. As an example and not by wayof limitation, if a first user emails a second user, the weight or therating for the action may be higher than if the first user simply viewsthe user-profile page for the second user.

In particular embodiments, social-networking system 802 may calculate acoefficient based on the type of relationship between particularobjects. Referencing the social graph 900, social-networking system 802may analyze the number and/or type of edges 906 connecting particularuser nodes 902 and concept nodes 904 when calculating a coefficient. Asan example and not by way of limitation, user nodes 902 that areconnected by a spouse-type edge (representing that the two users aremarried) may be assigned a higher coefficient than a user nodes 902 thatare connected by a friend-type edge. In other words, depending upon theweights assigned to the actions and relationships for the particularuser, the overall affinity may be determined to be higher for contentabout the user's spouse than for content about the user's friend. Inparticular embodiments, the relationships a user has with another objectmay affect the weights and/or the ratings of the user's actions withrespect to calculating the coefficient for that object. As an exampleand not by way of limitation, if a user is tagged in first photo, butmerely likes a second photo, social-networking system 802 may determinethat the user has a higher coefficient with respect to the first photothan the second photo because having a tagged-in-type relationship withcontent may be assigned a higher weight and/or rating than having alike-type relationship with content. In particular embodiments,social-networking system 802 may calculate a coefficient for a firstuser based on the relationship one or more second users have with aparticular object. In other words, the connections and coefficientsother users have with an object may affect the first user's coefficientfor the object. As an example and not by way of limitation, if a firstuser is connected to or has a high coefficient for one or more secondusers, and those second users are connected to or have a highcoefficient for a particular object, social-networking system 802 maydetermine that the first user should also have a relatively highcoefficient for the particular object. In particular embodiments, thecoefficient may be based on the degree of separation between particularobjects. The lower coefficient may represent the decreasing likelihoodthat the first user will share an interest in content objects of theuser that is indirectly connected to the first user in the social graph900. As an example and not by way of limitation, social-graph entitiesthat are closer in the social graph 900 (i.e., fewer degrees ofseparation) may have a higher coefficient than entities that are furtherapart in the social graph 900.

In particular embodiments, social-networking system 802 may calculate acoefficient based on location information. Objects that aregeographically closer to each other may be considered to be morerelated, or of more interest, to each other than more distant objects.In particular embodiments, the coefficient of a user towards aparticular object may be based on the proximity of the object's locationto a current location associated with the user (or the location of aclient system 806 of the user). A first user may be more interested inother users or concepts that are closer to the first user. As an exampleand not by way of limitation, if a user is one mile from an airport andtwo miles from a gas station, social-networking system 802 may determinethat the user has a higher coefficient for the airport than the gasstation based on the proximity of the airport to the user.

In particular embodiments, social-networking system 802 may performparticular actions with respect to a user based on coefficientinformation. Coefficients may be used to predict whether a user willperform a particular action based on the user's interest in the action.A coefficient may be used when generating or presenting any type ofobjects to a user, such as advertisements, search results, news stories,media, messages, notifications, or other suitable objects. Thecoefficient may also be utilized to rank and order such objects, asappropriate. In this way, social-networking system 802 may provideinformation that is relevant to user's interests and currentcircumstances, increasing the likelihood that they will find suchinformation of interest. In particular embodiments, social-networkingsystem 802 may generate content based on coefficient information.Content objects may be provided or selected based on coefficientsspecific to a user. As an example and not by way of limitation, thecoefficient may be used to generate media for the user, where the usermay be presented with media for which the user has a high overallcoefficient with respect to the media object. As another example and notby way of limitation, the coefficient may be used to generateadvertisements for the user, where the user may be presented withadvertisements for which the user has a high overall coefficient withrespect to the advertised object. In particular embodiments,social-networking system 802 may generate search results based oncoefficient information. Search results for a particular user may bescored or ranked based on the coefficient associated with the searchresults with respect to the querying user. As an example and not by wayof limitation, search results corresponding to objects with highercoefficients may be ranked higher on a search-results page than resultscorresponding to objects having lower coefficients.

In particular embodiments, social-networking system 802 may calculate acoefficient in response to a request for a coefficient from a particularsystem or process. To predict the likely actions a user may take (or maybe the subject of) in a given situation, any process may request acalculated coefficient for a user. The request may also include a set ofweights to use for various factors used to calculate the coefficient.This request may come from a process running on the online socialnetwork, from a third-party system 808 (e.g., via an API or othercommunication channel), or from another suitable system. In response tothe request, social-networking system 802 may calculate the coefficient(or access the coefficient information if it has previously beencalculated and stored). In particular embodiments, social-networkingsystem 802 may measure an affinity with respect to a particular process.Different processes (both internal and external to the online socialnetwork) may request a coefficient for a particular object or set ofobjects. Social-networking system 802 may provide a measure of affinitythat is relevant to the particular process that requested the measure ofaffinity. In this way, each process receives a measure of affinity thatis tailored for the different context in which the process will use themeasure of affinity.

In connection with social-graph affinity and affinity coefficients,particular embodiments may utilize one or more systems, components,elements, functions, methods, operations, or steps disclosed in U.S.patent application Ser. No. 11/503,093, filed 11 Aug. 2006, U.S. patentapplication Ser. No. 12/977,027, filed 22 Dec. 2010, U.S. patentapplication Ser. No. 12/978,265, filed 23 Dec. 2010, and U.S. patentapplication Ser. No. 13/632,869, field 1 Oct. 2012, each of which isincorporated by reference.

In particular embodiments, one or more of the content objects of theonline social network may be associated with a privacy setting. Theprivacy settings (or “access settings”) for an object may be stored inany suitable manner, such as, for example, in association with theobject, in an index on an authorization server, in another suitablemanner, or any combination thereof. A privacy setting of an object mayspecify how the object (or particular information associated with anobject) can be accessed (e.g., viewed or shared) using the online socialnetwork. Where the privacy settings for an object allow a particularuser to access that object, the object may be described as being“visible” with respect to that user. As an example and not by way oflimitation, a user of the online social network may specify privacysettings for a user-profile page identify a set of users that may accessthe work experience information on the user-profile page, thus excludingother users from accessing the information. In particular embodiments,the privacy settings may specify a “blocked list” of users that shouldnot be allowed to access certain information associated with the object.In other words, the blocked list may specify one or more users orentities for which an object is not visible. As an example and not byway of limitation, a user may specify a set of users that may not accessphotos albums associated with the user, thus excluding those users fromaccessing the photo albums (while also possibly allowing certain usersnot within the set of users to access the photo albums). In particularembodiments, privacy settings may be associated with particularsocial-graph elements. Privacy settings of a social-graph element, suchas a node or an edge, may specify how the social-graph element,information associated with the social-graph element, or content objectsassociated with the social-graph element can be accessed using theonline social network. As an example and not by way of limitation, aparticular concept node 904 corresponding to a particular photo may havea privacy setting specifying that the photo may only be accessed byusers tagged in the photo and their friends. In particular embodiments,privacy settings may allow users to opt in or opt out of having theiractions logged by social-networking system 802 or shared with othersystems (e.g., third-party system 808). In particular embodiments, theprivacy settings associated with an object may specify any suitablegranularity of permitted access or denial of access. As an example andnot by way of limitation, access or denial of access may be specifiedfor particular users (e.g., only me, my roommates, and my boss), userswithin a particular degrees-of-separation (e.g., friends, orfriends-of-friends), user groups (e.g., the gaming club, my family),user networks (e.g., employees of particular employers, students oralumni of particular university), all users (“public”), no users(“private”), users of third-party systems 808, particular applications(e.g., third-party applications, external websites), other suitableusers or entities, or any combination thereof. Although this disclosuredescribes using particular privacy settings in a particular manner, thisdisclosure contemplates using any suitable privacy settings in anysuitable manner.

In particular embodiments, one or more servers may beauthorization/privacy servers for enforcing privacy settings. Inresponse to a request from a user (or other entity) for a particularobject stored in a data store, social-networking system 802 may send arequest to the data store for the object. The request may identify theuser associated with the request and may only be sent to the user (or aclient system 806 of the user) if the authorization server determinesthat the user is authorized to access the object based on the privacysettings associated with the object. If the requesting user is notauthorized to access the object, the authorization server may preventthe requested object from being retrieved from the data store, or mayprevent the requested object from be sent to the user. In the searchquery context, an object may only be generated as a search result if thequerying user is authorized to access the object. In other words, theobject must have a visibility that is visible to the querying user. Ifthe object has a visibility that is not visible to the user, the objectmay be excluded from the search results. Although this disclosuredescribes enforcing privacy settings in a particular manner, thisdisclosure contemplates enforcing privacy settings in any suitablemanner.

The foregoing specification is described with reference to specificexemplary embodiments thereof. Various embodiments and aspects of thedisclosure are described with reference to details discussed herein, andthe accompanying drawings illustrate the various embodiments. Thedescription above and drawings are illustrative and are not to beconstrued as limiting. Numerous specific details are described toprovide a thorough understanding of various embodiments.

The additional or alternative embodiments may be embodied in otherspecific forms without departing from its spirit or essentialcharacteristics. The described embodiments are to be considered in allrespects only as illustrative and not restrictive. The scope of theinvention is, therefore, indicated by the appended claims rather than bythe foregoing description. All changes that come within the meaning andrange of equivalency of the claims are to be embraced within theirscope.

What is claimed is:
 1. A method comprising: providing, by a socialnetworking system, a social media post to a first user within a socialnetworking application and within a newsfeed customized for the firstuser and displayed on a touch screen display of a mobile device, whereinthe social networking newsfeed comprises a plurality of social mediaposts and wherein the social media post is associated with a second userand comprises structured data associated with a product being sold bythe second user; providing, by the social networking system, a messagecontrol within the social media post; detecting, by the socialnetworking system, a selection of the message control by the first user;providing, by the social networking system, in response to the detectedselection of the message control and to the first user, a pre-populatedelectronic message within a separate messaging application, wherein thepre-populated electronic message within the separate messagingapplication comprises at least a portion of the structured dataassociated with the product from the social media post and whereinproviding the pre-populated electronic message within the separatemessaging application comprises changing the display focus of the touchscreen display from the social networking application to the separatemessaging application; receiving, by the social networking system andfrom the first user via the separate messaging application, anelectronic message associated with the pre-populated electronic message;and sending, by the social networking system and to the second user, theelectronic message and the pre-populated electronic message.
 2. Themethod as recited in claim 1, further comprising organizing theelectronic message in the separate messaging application based on theportion of the structured data associated with the product.
 3. Themethod as recited in claim 1, further comprising maintaining, within theseparate messaging application, the electronic message and thepre-populated electronic message as part of a communication threadbetween the first user and the second user.
 4. The method as recited inclaim 3, further comprising adding the communication thread between thefirst user and the second user to a maintained plurality ofcommunication threads associated with the product.
 5. The method asrecited in claim 4, further comprising: receiving, from the second uservia the separate messaging application, a broadcast electronic messagerelated to the product; and adding the broadcast electronic messagerelated to the product to the maintained plurality of communicationthreads.
 6. The method as recited in claim 5, further comprisingproviding a notification related to the broadcast electronic message tothe first user and a plurality of other users associated with theplurality of communication threads.
 7. The method as recited in claim 6,further comprising: detecting a purchase event associated with theproduct; generating, in response to the detected purchase event, apurchase event electronic message; adding the purchase event electronicmessage to the maintained plurality of communication threads via theseparate messaging application; and providing a notification related tothe purchase event electronic message to the plurality of other usersassociated with the plurality of communication threads.
 8. The method asrecited in claim 1, further comprising, in response to detecting theselection of the message control by the first user: determining that theseparate messaging application needs to be installed on aclient-computing device associated with the first user prior toproviding the pre-populated electronic message; prompting the first userto install the separate messaging application on the client-computingdevice associated with the first user; and providing the pre-populatedelectronic message within the separate messaging application in responseto determining that the separate messaging application is installed onthe client-computing device associated with the first user.
 9. A systemcomprising: at least one processor; and at least one non-transitorycomputer-readable storage medium storing instructions thereon that, whenexecuted by the at least one processor, cause the system to: provide asocial media post to a first user within a social networking applicationand within a newsfeed customized for the first user and displayed on atouch screen display of a mobile device, wherein the social networkingnewsfeed comprises a plurality of social media posts and wherein thesocial media post is associated with a second user and comprisesstructured data associated with a product being sold by the second user;provide a message control associated with the social media post; detecta selection of the message control by the first user; provide, to thefirst user, a pre-populated electronic message within a separatemessaging application, wherein the pre-populated electronic messagewithin the separate messaging application comprises at least a portionof the structured data associated with the product from the social mediapost and wherein providing the pre-populated electronic message withinthe separate messaging application comprises changing the display focusof the touch screen display from the social networking application tothe separate messaging application; receive, from the first user via theseparate messaging application, an electronic message associated withthe pre-populated electronic message; and send, to the second user, theelectronic message and the pre-populated electronic message.
 10. Thesystem as recited in claim 9, further comprising instructions that, whenexecuted by the at least one processor, cause the system to: maintainthe electronic message and the pre-populated electronic message as partof a communication thread between the first user and the second userwithin the separate messaging application; and add the communicationthread between the first user and the second user to a maintainedplurality of communication threads, within the separate messagingapplication, associated with the social media post and a plurality ofother users.
 11. The system as recited in claim 10, further comprisinginstructions that, when executed by the at least one processor, causethe system to: detect a purchase event associated with the social mediapost and the first user; and deliver a sold notification to each of theplurality of other users associated with the maintained plurality ofcommunication threads via the separate messaging application, whereinthe sold notification references the social media post.
 12. Anon-transitory computer-readable medium storing instructions thereonthat, when executed by at least one processor, cause a computer systemto: provide a social media post to a first user within a socialnetworking application and within a newsfeed customized for the firstuser and displayed on a touch screen display of a mobile device, whereinthe social networking newsfeed comprises a plurality of social mediaposts and wherein the social media post is associated with a second userand comprises structured data associated with a product being sold bythe second user; provide a message control associated with the socialmedia post; detect a selection of the message control by the first user;provide, to the first user, a pre-populated electronic message within aseparate messaging application, wherein the pre-populated electronicmessage within the separate messaging application comprises at least aportion of the structured data associated with the product from thesocial media post and wherein providing the pre-populated electronicmessage within the separate messaging application comprises changing thedisplay focus of the touch screen display from the social networkingapplication to the separate messaging application; receive, from thefirst user via the separate messaging application, an electronic messageassociated with the pre-populated electronic message; and send, to thesecond user, the electronic message and the pre-populated electronicmessage.
 13. The non-transitory computer-readable medium as recited inclaim 12, further storing instructions thereon that, when executed bythe at least one processor cause the computer system to organize theelectronic message in the separate messaging application based on theportion of the structured data associated with the product.
 14. Thenon-transitory computer-readable medium as recited in claim 13, furtherstoring instructions thereon that, when executed by the at least oneprocessor cause the computer system to maintain, within the separatemessaging application, the electronic message and the pre-populatedelectronic message as part of a communication thread between the firstuser and the second user.
 15. The non-transitory computer-readablemedium as recited in claim 14, further storing instructions thereonthat, when executed by the at least one processor cause the computersystem to add the communication thread between the first user and thesecond user to a maintained plurality of communication threadsassociated with the product.
 16. The non-transitory computer-readablemedium as recited in claim 15, further storing instructions thereonthat, when executed by the at least one processor cause the computersystem to receive, from the second user via the separate messagingapplication, a broadcast electronic message related to the product. 17.The non-transitory computer-readable medium as recited in claim 16,further storing instructions thereon that, when executed by the at leastone processor cause the computer system to add the broadcast electronicmessage related to the product to the maintained plurality ofcommunication threads.
 18. The non-transitory computer-readable mediumas recited in claim 17, further storing instructions thereon that, whenexecuted by the at least one processor cause the computer system toprovide a notification related to the broadcast electronic message tothe first user and a plurality of other users associated with theplurality of communication threads.
 19. The non-transitorycomputer-readable medium as recited in claim 18, further storinginstructions thereon that, when executed by the at least one processorcause the computer system to detect a purchase event associated with thesocial media post and the first user.
 20. The non-transitorycomputer-readable medium as recited in claim 19, further storinginstructions thereon that, when executed by the at least one processorcause the computer system to deliver a sold notification to each of theplurality of other users associated with the maintained plurality ofcommunication threads via the separate messaging application, whereinthe sold notification references the social media post.